【问题标题】:create URL slugs for chinese characters. Using PHP为中文字符创建 URL slug。使用 PHP
【发布时间】:2014-06-07 23:08:58
【问题描述】:

我的用户有时会使用中文字符作为他们输入的标题。

我的 slug 格式为 /stories/:id-:name,其中一个示例可能是 /stories/1-i-love-php

我如何允许汉字?

我用谷歌搜索并在here 上找到了这个答案的日文版。

不太懂日语,所以问的是中文版的。

谢谢。

【问题讨论】:

  • 你在用wordpress吗?
  • 我没有使用 wordpress。我正在使用 PHP 编写自己的 webapp。
  • 请提供带有中文字符的示例网址以供我测试和检查:
  • 我已经给出了解决方案,你可以试试...

标签: php regex slug non-ascii-characters chinese-locale


【解决方案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)

【讨论】:

  • 很抱歉打扰您,但是您的正则表达式也允许未知字符,例如 @#!!?-=+ ,有没有办法允许中文单词同时又防止未知字符跨度>
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 2014-03-10
  • 2014-03-25
  • 2014-11-06
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多