为中文字符创建 URL slug。使用 PHP
Posted
技术标签:
【中文标题】为中文字符创建 URL slug。使用 PHP【英文标题】:create URL slugs for chinese characters. Using PHP 【发布时间】:2014-06-07 23:08:58 【问题描述】:我的用户有时会使用中文字符作为他们输入的标题。
我的 slug 格式为 /stories/:id-:name
,其中一个示例可能是 /stories/1-i-love-php
。
我如何允许汉字?
我用谷歌搜索并在here 上找到了这个答案的日文版。
不太懂日语,所以问的是中文版的。
谢谢。
【问题讨论】:
你在用wordpress吗? 我没有使用 wordpress。我正在使用 PHP 编写自己的 webapp。 请提供带有中文字符的示例网址以供我测试和检查: 我已经给出了解决方案,你可以试试... 【参考方案1】:我已经测试过孟加拉语字符
它可能会起作用。尝试这个: 首先编码页面(在页面中写入代码)必须转换为UTF-8编码类型,然后再编写代码。
代码在这里:
function to_slug($string, $separator = '-')
$re = "/(\\s|\\".$separator.")+/mu";
$str = @trim($string);
$subst = $separator;
$result = preg_replace($re, $subst, $str);
return $result;
$id=34;
$string_text="আড়াইহাজারে দেড় বছরের --- শিশুর -গলায় ছুরি";
$base_url="http://example.com/";
echo $target_url=$base_url.$id."-". @to_slug($string_text);
var_dump($target_url);
输出:
http://example.com/34-আড়াইহাজারে-দেড়-বছরের-শিশুর-গলায়-ছুরি
string 'http://example.com/34-আড়াইহাজারে-দেড়-বছরের-শিশুর-গলায়-ছুরি' (length=136)
【讨论】:
很抱歉打扰您,但是您的正则表达式也允许未知字符,例如 @#!!?-=+ ,有没有办法允许中文单词同时又防止未知字符跨度>以上是关于为中文字符创建 URL slug。使用 PHP的主要内容,如果未能解决你的问题,请参考以下文章
php PHP的简单slugify功能。为传递的字符串创建一个slug,同时考虑国际字符。
将任何标题转换为 url slug 并从 url slug 转换为标题