编码SEO友好的URL

时间:2015-11-12 20:37:28

标签: php regex

我正在尝试对短语进行编码,以便将其传递到URL中。目前它适用于基本单词,其中空格替换为破折号。

<a href="./'.str_replace(' ', '-', preg_replace("/[^A-Za-z0-9- ]/", '', $phrase)).'">

它产生类似的东西:

/this-is-my-phase

在此网址带我的页面上,我可以用空格替换短划线并查询我的数据库中的这个短语。

我遇到的问题是如果短语包含撇号。我当前的脚本将其删除。有没有办法保留它或用一些URL友好的字符替换以容纳类似的东​​西?

this is bob's page

3 个答案:

答案 0 :(得分:1)

有一个PHP标准库函数urlencode()来编码%Xxx的非字母数字字符,其中xx是字符的十六进制值。

如果无法接受转换的限制(&amp;,©,£等),请参阅rawurlencode()

答案 1 :(得分:0)

如果您想允许其他字符,则必须将其添加到此部分:^A-Za-z0-9-因此,例如,如果您希望允许'正则表达式为[^A-Za-z0-9-' ]

答案 2 :(得分:0)

如果您只需要替换所有撇号('),那么您可以将其替换为网址编码的字符%27

str_replace("'", "%20", $url);

修改

如果您想要替换所有不安全的URL,请使用@ wallyk的答案中的内置函数。它简单得多。