主题与阿拉伯语编码字符的URL重写模式有关。 我们想要使用PHP / MYSQL为每个插入数据库的标题创建一个标题重写,在英文的情况下,每件事情都是正确的,使用下面的函数:
$rlink =preg_replace ('/ /i', '-', $link);
$rlink2 =preg_replace ('/[^a-z0-9\-]/i', '', $rlink);
$rlink2 =preg_replace ('/--/i', '-', $rlink2);
return $rlink2;
此功能不能用于阿拉伯字符,它会将所有字符排除在(a-z)之外,因此无法使用。
如何继续使用PHP / MYSQL在网址中使用阿拉伯语标题,如下所示:
http://localhost/html/test/الصفحة-الرئيسية/
?
感谢您的建议。
答案 0 :(得分:0)
您需要将您的字符集指定为UTF-8才能存储阿拉伯字符,因此在将记录插入数据库之前尝试将这些行添加到您的php中(假设您运行的是mysql)
mysql_query('SET character_set_results=utf8');
mysql_query('SET names=utf8');
mysql_query('SET character_set_results=utf8');
此外,还有一些其他问题可以解决类似的问题,请查看:
How to make MySQL handle UTF-8 properly
setting utf8 with mysql through php
PHP/MySQL with encoding problems
Storing and displaying unicode string (हिन्दी) using PHP and MySQL
编辑:我可能误解了这个问题,您是否尝试重写物理URL以使用阿拉伯字符或将URL存储在MySql中?
答案 1 :(得分:0)
您可以使用unicode字符类。
http://www.php.net/manual/en/regexp.reference.unicode.php
允许您为其属性匹配unicode字符,例如是一个字母,数字或标点符号
所以你的行:
$rlink2 = preg_replace ('/[^a-z0-9\-]/i', '', $rlink);
会变成:
$rlink2 = preg_replace ('/[^\pL\pN\-]/i', '', $rlink);
其中\ pL表示搜索任何字母的“L”类,\ pN表示搜索任何数字的“N”类。
我不是阿拉伯语的演讲者,但我很确定你还需要至少包含一个其他课程,以便在连接器和其他用于将阿拉伯字母加入单词的字母上进行匹配,因为那些赢了被归类为字母,但将是某种形式的标点符号。
一旦你提取了正则表达式,只要你的MySQL被设置为使用UTF8就应该是你所需要的。