1

该主题与阿拉伯语编码字符的 URL 重写模式有关。我们想使用 PHP/MYSQL 为插入数据库的每个标题创建一个标题重写,在英文的情况下,一切正常,使用下面的函数:

$rlink =preg_replace ('/ /i', '-', $link);
$rlink2 =preg_replace ('/[^a-z0-9\-]/i', '', $rlink);
$rlink2 =preg_replace ('/--/i', '-', $rlink2);
return $rlink2;

此功能不能用于阿拉伯字符,它会消除所有未进入(az)的字符,因此不能使用。

如何继续使用 PHP/MYSQL 在 url 中使用阿拉伯标题,如下所示 http://localhost/html/test/الصفحة-الرئيسية/

谢谢你的建议。

4

2 回答 2

0

您需要将您的字符集指定为 UTF-8 才能存储阿拉伯字符,因此在将记录插入数据库之前尝试将这些行添加到您的 php(假设您正在运行 mysql)

mysql_query('SET character_set_results=utf8');
mysql_query('SET names=utf8');
mysql_query('SET character_set_results=utf8');

此外,还有一些关于 SO 的其他问题可以解决类似问题,请查看:

如何让 MySQL 正确处理 UTF-8

通过 php 用 mysql 设置 utf8

PHP/MySQL 有编码问题

使用 PHP 和 MySQL 存储和显示 unicode 字符串 (हिन्दी)

编辑:我可能误读了这个问题,您是否试图重写物理 URL 以使用阿拉伯字符或将 URL 存储在 MySql 中?

于 2012-06-26T15:17:34.543 回答
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 就可以了。

于 2012-06-26T15:32:19.487 回答