我很难理解如何保存挪威字母在这个preg_replace函数中,我获得了将论坛标题修改为SEO url的功能。我的网站以"iso-8859-1"格式呈现。
How i want it: someurl.com/read=kjøp_og_salg
目前是这样的: someurl.com/read=kj_p_og_salg
//----- The seo url function ------//
public function make_seo_name($title){
$title = preg_replace('/['"]/', '', $title);
$title = preg_replace('/[^a-zA-Z0-9]+/', '_', $title);
$title = strtolower(trim($title, '_'));
return $title;
}
在preg_replace
完成之前和之后,我尝试了utf8_encode/decode
和$title
,但没有工作。
解决了,我在"一个把戏小马"的帮助下修复了它。我最终得到了这个函数。
public function make_seo_name($title){
$title = utf8_encode($title);
$title = preg_replace('/['"]/', '', $title);
$title = preg_replace('/[^a-zA-Z0-9øåæ]+/', '_', $title);
$title = strtolower(trim($title, '_'));
return $title;
}
注意:我不需要将标题从"iso-8859-1"更改为"UTF-8"
'/[^a-zA-Z0-9]+/'
位是一个正则表达式,表示只匹配而不是字符a
到z
、A
到Z
或0
到9
。基本语法在维基百科上。
preg_replace
然后用下划线替换这些字符。
您可以在此列表中添加您想要允许的额外字符:
$title = preg_replace('/[^a-zA-Z0-9æøå]+/', '_', $title);
设置文档编码为utf-8或iso-8859-1,并将字符添加到列表中,如:
<head><meta charset="utf-8" /></head>
和
$title = preg_replace('/[^a-zA-Z0-9æøå]+/', '_', $title);