質問

以下の正規表現を使用して、ラチン以外の文字を取り除いています。その結果、342文字を超える文字列を使用すると、関数が失敗し、すべてが中止され、Webサイトの接続がリセットされることがわかりました。

句読文字に一致する p {p} unicode文字プロパティにそれをnarりました。

問題がどこにあるかを正確に知っている/見る人はいますか?

preg_match('/^([\p{P}\p{S}&\p{Latin}0-9]|\s)*$/u', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');

役に立ちましたか?

解決

あなたが非ラチン文字を「除草」しているなら、なぜこれをしないのですか:

preg_replace('/[^\p{Latin}]+/u', '', $s)

編集: さて、あなたはしようとしています 検証 入力。私はこれを使用するつもりでした:

preg_match('/^[\p{Latin}]+$/u', $s)

...しかし、ラテン語のみに一致することがわかります 手紙. 。私はジャワの文書化されていない速記のことを考えていました、 \p{L1}, 、LATIN1(ISO-8859-1)文字セットのすべてに一致しますが、PHPでは次のことを綴る必要があります。

preg_match('/^[\x00-\xFF]+$/u', $s)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top