ホームページ >バックエンド開発 >PHPチュートリアル >正規表現をオンライン テスト ツールに入れることは可能ですが、ファイル内の echo 配列に入れることはできません。

正規表現をオンライン テスト ツールに入れることは可能ですが、ファイル内の echo 配列に入れることはできません。

WBOY
WBOYオリジナル
2016-06-23 14:21:571160ブラウズ

この正規表現は、これらの正規表現テスト ツールで正しく照合できます。 なぜ preg_match_all('/(@[a-z]+|[u4e00-u9fa5]+|[A-Z]+|[a-z]+|[a-z ]+|) に置くのでしょう。 [0-9]+)/is'、$a) は機能しませんか?テストツールではグローバル検索を選択できるのですが、選択できません。これが原因でしょうか? preg_match_all はグローバルに検索しないのでしょうか?


ディスカッションへの返信 (解決策)

いくつかの質問
1. preg_match_all (normal、string、result)、上記のパラメータは 2 つだけです
2. パラメータを区切るためにカンマは全角で使用されていますか?
3. u を

に変更します。ルール文字列に Unicode 文字が含まれているため、u 修飾子が必要です


正しい書き方は次のとおりです:
/(@[a-z]+|[x{4e00}-x{9fa5 }]+|[A-Z ]+|[a-z]+|[a-z]+|[0-9]+)/isu

正しい書き方は次のとおりです:
/(@[a-z]+|[x{ 4e00}-x{9fa5}]+ |[A-Z]+|[a-z]+|[a-z]+|[0-9]+)/isu

最終結果 $res (3 番目のパラメーター) が 2- である理由2 つの要素を持つ次元配列、および 2 つの要素の内容は同じですか?

$res[0] $res[1] は同じです

正しい書き方は次のとおりです:
/(@[a-z]+|[x{4e00}-x{9fa5}]+|[A-Z]+ |[a-z]+ |[a-z]+|[0-9]+)/isu

ありがとうございます。以前にこれらのオンライン テスト ツールで次のルールをテストした理由を聞きたいのですが。正しい一致を取得してファイルに入れることはできませんか?

@[a-z]+|[u4e00-u9fa5]+|[A-Z]+|[a-z]+|[a-z]+|[0-9]+

この u4e00-u9fa5 は Unicode でエンコードされた中国語の区間です。テスト ツールは Web ページの形式です
PHP の通常のエンジンはこの形式を認識できないため、当然正しい結果を得ることができません


正しい書き方は次のとおりです:

/(@[a-z]+| [x{4e00}- x{9fa5}]+|[A-Z]+|[a-z]+|[a-z]+|[0-9]+)/isu

ありがとうございます。結果がわかりました。以前にこれらのオンライン テスト ツールを使用した理由を尋ねたいのですが、次のルールを内部でテストすると、正しい一致が得られますが、それをファイルに含めることはできますか?
@[a-z]+|[u4e00-u9fa5]+|[A-Z]+|[a-z]+|[a-z]+|[0-9]+
オンライン テストまたはブラウザ プラグインは php エンジンを使用しません。 JSエンジンの正規表現かもしれません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。