Generating search engine friendly (SEF) URLs can dramatically improve your search engine results. There's a big difference between "/post.php?id=2382" and "/great-php-functions/". Having search engine friendly URLs also gives the user an idea of what will be on the page they are clicking on if the link text isn't adequate.
I've created sister PHP functions to generate search engine friendly URLs for the CMS' I create for my customers. The idea is fairly simple. I take the user-created page title and feed it to a scrubbing function to:
- remove all punctuation
- switch the URL to lowercase
- remove spaces, replace with a given delimiter (in this case, a dash)
- remove duplicate words
- remove words that aren't helpful to SEO
The Code
/* takes the input, scrubs bad characters */
function generate_seo_link($input, $replace = '-', $remove_words = true, $words_array = array()) {
//make it lowercase, remove punctuation, remove multiple/leading/ending spaces
$return = trim(ereg_replace(' +', ' ', preg_replace('/[^a-zA-Z0-9\s]/', '', strtolower($input))));
//remove words, if not helpful to seo
//i like my defaults list in remove_words(), so I wont pass that array
if($remove_words) { $return = remove_words($return, $replace, $words_array); }
//convert the spaces to whatever the user wants
//usually a dash or underscore..
//...then return the value.
return str_replace(' ', $replace, $return);
}
/* takes an input, scrubs unnecessary words */
function remove_words($input,$replace,$words_array = array(),$unique_words = true)
{
//separate all words based on spaces
$input_array = explode(' ',$input);
//create the return array
$return = array();
//loops through words, remove bad words, keep good ones
foreach($input_array as $word)
{
//if it's a word we should add...
if(!in_array($word,$words_array) && ($unique_words ? !in_array($word,$return) : true))
{
$return[] = $word;
}
}
//return good words separated by dashes
return implode($replace,$return);
}
The Explanation
The function accepts four values:
- $input - string - will be SEO'd, in my case, the page title
- $replace - string - the word separator, in most cases a dash or underscore
- $remove_words - boolean - remove specific, non-helpful SEO words
- $words_array - array - an array of words that should be removed from every URL because they aren't helpful to SEO
Example Results
$bad_words = array('a','and','the','an','it','is','with','can','of','why','not');
echo generate_seo_link('Another day and a half of PHP meetings', '-', true, $bad_words);
//displays :: another-day-half-php-meetings
echo generate_seo_link('CSS again? Why not just PHP?', '-', true, $bad_words);
//displays :: css-again-just-php
echo generate_seo_link('A penny saved is a penny earned.', '-', true, $bad_words);
//displays :: penny-saved-earned
Do yourself a favor -- make your dynamic pages more search engine friendly with clean URLs!
来源:http://davidwalsh.name/php-seo
本文介绍了一种通过PHP函数生成搜索引擎友好URL的方法。该方法能够移除标点符号、转换为小写、用指定分隔符替换空格、去除重复词汇,并过滤掉对SEO无益的词汇,从而提高网页在搜索引擎中的排名。

被折叠的 条评论
为什么被折叠?



