[英]How to generate seo friendly url's with php?
我想將http://mysite.com/id255/
為http://mysite.com/gora-beach-inn/
。
我的PHP看起來像:
$result = mysql_query("
SELECT id, header
FROM Article
");
while($data = mysql_fetch_assoc($result)){
mysql_query("
UPDATE Article
SET seo = '".MakeSeo($data['header'])."'
WHERE datum = '".$data['datum']."'
");
}
//Convert: "åäö" to "aao", "space" to "-", "!?" to "nothing", and all to lower case.
function MakeSeo($string)
{
???
}
請使用MakeSoe功能幫助我。
我使用moderewrite,因此我只需要幫助來生成URL,因此可以將它們保存在數據庫中。
只是回答您的要求..到這里就可以
function makeSeo($text, $limit=75)
{
// replace non letter or digits by -
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
// trim
$text = trim($text, '-');
// lowercase
$text = strtolower($text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
if(strlen($text) > 70) {
$text = substr($text, 0, 70);
}
if (empty($text))
{
//return 'n-a';
return time();
}
return $text;
}
您可以添加更多過濾器來清理網址,也可以添加更多內容以使網址具有唯一性。
注意:我並不是說將url添加到數據庫是最好的方法。 您可以使用其他技術(例如mod_rewrite)來實現相同的功能。
您將需要使用mod_rewrite來實現此目的,否則另一種方法是php完成的“內部”方法,您將執行以下操作:
http://mydomain.com/index.php/category/dogs
以上只是一個GET帖子,索引通過include / mysql等處理內容加載;
非正則表達式和更靈活的解決方案可以通過2個數組完成。 在from和to數組中定義所有字符。 省略的字符將被替換為-這是javascript函數的示例
function ToSeoFriendly(title) {
title = title.toLowerCase();
var generated = "";
var from = "ãàáäâẽèéëêìíïîõòóöôùúüûñçýčšžřľňäôabcdefghijklmnopqrstuvwxyz1234567890";
var to = "aaaaaeeeeeiiiiooooouuuuncycszrlnaoabcdefghijklmnopqrstuvwxyz1234567890-";
for (var i=0;i<title.length;i++){
generated += to.substr(from.indexOf(title.substr(i,1)),1);
}
return generated;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.