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

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' を検索することを意味します。

私はアラビア語の話者ではありませんが、コネクタとアラビア文字を単語に結合するために使用される他の書記素で照合できるようにするために、少なくとも1つの他のクラスも含める必要があると確信しています。これらは分類されません。文字としてですが、何らかの形式の句読点になります。

正規表現を抽出したら、MySQL が UTF8 を使用するように設定されている限り、これで十分です。

于 2012-06-26T15:32:19.487 に答える
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 を書き直してアラビア文字を使用しようとしたり、MySql に URL を保存しようとしたりしましたか?

于 2012-06-26T15:17:34.543 に答える