Sam*_*Sam 9 php string url url-rewriting
想象一下包含UTF-8中几个单词的任何给定语言(英语,阿拉伯语,日语等)的页面标题字符串.例:
$stringRAW = "Blues & ?????? Bliss's ???? Schön";
Run Code Online (Sandbox Code Playgroud)
现在,这实际上需要转换为该页面的URL的有效部分:
$stringURL = "blues-??????-bliss-????-schön"
Run Code Online (Sandbox Code Playgroud)
只是看看这个链接 这也适用于我的服务器!
Q1.这些天允许哪些字符作为有效网址?我记得在浏览器上看到了一些阿拉伯字符串,我在我的apache 2上测试了它,一切正常.
我猜它必须成为: $stringURL = "blues-blows-bliss-black"
Q2.您知道哪些现有的PHP函数正确编码/转换这些UTF-8字符串,以便将URL从任何无效字符中删除?
我猜到至少:1.空格 should be converted into dashes -
2.删除无效字符?他们是谁? @和'&'?
3.将所有字母转换为小写字母(或者是在网址中有效的capitcal字母?)
谢谢:非常感谢您的建议!
gro*_*gor 11
这是我使用的解决方案:
$text = 'Nevalidní ?eský text';
$text = preg_replace('/[^\\pL0-9]+/u', '-', $text);
$text = trim($text, "-");
$text = iconv("utf-8", "us-ascii//TRANSLIT", $text);
$text = preg_replace('/[^-a-z0-9]+/i', '', $text);
Run Code Online (Sandbox Code Playgroud)
URL中的大写字母不是问题,但如果您希望文本为小写,则只需$text = strtolower($text);在末尾添加:-).
我会用:
$stringURL = str_replace(' ', '-', $stringURL); // Converts spaces to dashes
$stringURL = urlencode($stringURL);
Run Code Online (Sandbox Code Playgroud)