質問

regexpの問題を解決することはできません。

わかりました、入力するとき:

$string = preg_replace("#\[name=([a-zA-Z0-9 .-]+)*]#","$name_start $1 $name_end",$string);

ロシア語の状況を除いて、すべては大丈夫です。

だから、私はこのreg-Expを再タイプしようとします:

$string = preg_replace("#\[name=([a-zA-Z0-9**а-яА-Я** .-]+)*]#","$name_start $1 $name_end",$string);

しかし、これは機能していません、

私はいくつかのアイデアを知っています、ただ書くだけです:

$string = preg_replace("#\[name=([a-zA-Z0-9йцукенгшщзхъфывапролджэячсмитьбю .-]+)*]#","$name_start $1 $name_end",$string);

しかし、これはクレイジーです:d

シンプルなバリアントをください

役に立ちましたか?

解決

ユニコード範囲を試してください:

'/[\x{0410}-\x{042F}]/u'  // matches a capital cyrillic letter in the range A to Ya

Unicodeの /uフラグを忘れないでください。

あなたの場合:

"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)*]#u"

あなたの正規表現の星は冗長であることに注意してください。すべてがすでにプラスによって「食べられ」られています。これは同じことをします:

"#\[name=([a-zA-Z0-9\x{0430}-\x{044F}\x{0410}-\x{042F} .-]+)]#u"

他のヒント

一般的なUnicodeスクリプト(PCRE 3.3以降サポートされている)は、プロパティのテストを提供します キリル.

たとえば、キリル語でも(ラテン語)桁ではないすべての文字を置き換えます。

$string = '1a2b3cйdцeуfкбxюy';
echo preg_replace('/[^0-9\p{Cyrillic}]/u', '*', $string);

その機能のドキュメントを見つけることができます http://www.pcre.org/pcre.txt 「Unicode文字プロパティ」。
そして、あなたはで説明されているようにPCRE8フラグ(u)を指定する必要があります http://docs.php.net/reference.pcre.pattern.modifiers

これは私のために働いた:

/^[а-яА-Я\p{Cyrillic}0-9\s\-]+$/ 

Safariを含むすべてのブラウザでテストしました

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top