6

重複の可能性:
URL 正規表現にアラビア文字を追加する方法

私は答えなしで数時間検索しています。

英語だけでなくアラビア文字でも preg_replace をどのように使用しますか?

これは私のコードは英語です

$string = preg_replace ( "/&([a-zA-Z])(uml|acute|grave|circ|tilde|ring),/", "", $string );
$string = preg_replace ( "/[^a-zA-Z0-9_.-]/", "", $string );

回答のいくつかは、私がこのコードを使用することを示唆しています:

$string = preg_replace ( "/&([أ-يa-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string );
$string = preg_replace ( "/[^أ-يa-zA-Z0-9_.-]/u", "", $string );

私はそれをテストしましたが、動作します。しかし、これは実際にphpで機能しますか? すべてのアラビア文字が含まれていますか? すべてのアラビア文字を含めるより良い方法はありますか?

私がコードでやろうとしていることは次のとおりです。

文字列内のすべての文字を有効な SEO フレンドリーな文字に置き換えます。

http://www.unicodemap.orgに基づくこのコードを使用して問題を解決しました。ブライアン、ありがとう。

$string = preg_replace ( "/&([\x{0600}-\x{06FF}a-zA-Z])(uml|acute|grave|circ|tilde|ring),/u", "", $string );
    $string = preg_replace ( "/[^\x{0600}-\x{06FF}a-zA-Z0-9_.-]/u", "", $string );
4

2 に答える 2

9

Unicode文字マップは、文字列の最初の部分がグループ化されているアラビア語を含む文字のグループを視覚化するのに最適な場所です。[أ-يa-zA-Z]

それでもわからない場合は、正規表現についてもう少し読んでください。

于 2012-08-20T23:25:42.713 に答える
1

あなたの範囲で私が見ているのは、あなたが持っていること[أ-ي]であり、右側のものは最初の文字であるアラビア語のAであることを知っています. 最初のキャラはよくわからないけど、最後のキャラみたいな感じかな。その場合、PHP 言語は英語であるため、範囲の方向を[ي-أ]代わりに変更することをお勧めします。

また、正規化のために、ブライアンが提案したように、代わりに Unicode 文字範囲を使用します。

于 2012-08-20T23:36:02.487 に答える