您的位置:首页 > 编程语言 > PHP开发

PHP 集成友好url Generate Search Engine Friendly URLs with PHP Functions

2014-07-25 18:07 676 查看
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

Php代码


/* 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

Php代码


$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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: