ホームページ > バックエンド開発 > PHPチュートリアル > 定期マッチングについて少し疑問があるので教えてください。

定期マッチングについて少し疑問があるので教えてください。

WBOY
リリース: 2016-06-23 13:54:25
オリジナル
728 人が閲覧しました

rreee
助けてください、ありがとう。


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

// 古い文字を持つドナルドダックやその他の文字は通過できません
ルールは次のとおりです: $pre='/老/'
preg_match は一致したものを返します。回数 (0 または 1) の場合、一致は 1 回だけ実行されます
'/['" ]/'
このルールは、一重引用符、二重引用符、半角スペース、全角スペース、これら 4 つのセットを長さの限り検索することです。エスケープする必要がある単一引用符を除いて、どれもパスしません

エンコーディングを指定します

<?php$str='唐老鸭'; //老,唐老鸭等有老字的都不能通过$pre='/[\'\"\ \ ]/'; //把全角空格去掉就可以if(preg_match($pre, $str)){	echo $str.'不通过';}else{	echo $str.'通过';}?>
ログイン後にコピー

$pre='/[\'\"\ \ ]/u';
ログイン後にコピー
ログイン後にコピー
ドナルドダックはパスします
$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
ログイン後にコピー
ログイン後にコピー
ドナルドダックはパスしません

何かわかりません。あなたがやりたいこと

$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
ログイン後にコピー
ログイン後にコピー
Donald Duck 合格
$str='唐老鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
ログイン後にコピー
ログイン後にコピー
Donald Duck 不合格

あなたが何をしたいのかわかりません



申し訳ありませんが、私の質問が明確に表現されていませんでした
$str 文字列に次が含まれているかどうかを検出するためです$pre に単一引用符、スペースなどが含まれている場合は、渡されないことを意味します。
例: $str='Hello' が渡されることを意味します。 str='Hello' は 2 つの単語の間にスペースがあると渡されません
しかし、$str= 'Donald Duck' と $str='老' には半角スペースが含まれないことがわかりました。 、全角スペース、一重引用符、または二重引用符は不思議です


//Old、Donald Duck などは通せません

ルールは次のとおりです: $pre='/老/';

preg_match は一致の数 (0 または 1) を返し、1 つの一致のみを実行します
'/['" ]/'
このルールは、一重引用符、二重引用符、半スペース、および完全を検索することです。 width スペース これら 4 つのいずれかがセットに含まれている限り、それは渡されません。エスケープする必要がある一重引用符を除いて、その他は省略できます

申し訳ありませんが、私の質問は明確に表現されていませんでした。

$str 文字列に $pre に一重引用符やスペースなどが含まれているかどうかを検出します。含まれている場合は渡されないことを意味します。
例: $str='Hello' は通過可能です
$str='Hello' と 2 つの単語の間にスペースがある場合は通過できません
しかし、$str='Donald Duck' または $str='Old' は見つかりませんでした。どちらも半角スペース、全角スペース、一重引用符、二重引用符が含まれていません
ありがとうございます。

いいえ、私の 2 つのテスト結果に何か問題がありますか?

いいえ、私の 2 つのテスト結果に何か問題がありますか?

ここで最初のテストに落ちました、理由がわかりません


いいえ、私の 2 つのテスト結果に何か問題がありますか?


ここで最初の失敗しました、理由はわかりません


$pre の大きな全角スペースを削除するだけです


#2 経典にあるように、utf-8 エンコーディングに u 属性を追加します



いいえ、私の 2 つのテスト結果に何か問題がありますか?


ここで最初の失敗に失敗しました。理由はわかりません


#2 先ほども言ったように、u 属性が utf-8 エンコーディングに追加されます




いいえ、私の結果はどうなりますか? 2つのテストですよね?


ここで最初の失敗しました、理由はわかりません


わかりました、ありがとうございます


エンコードを指定してください

$str='唐老 鸭'; $pre='/[\'\"\ \ ]/';if(preg_match($pre, $str)){    echo $str.'不通过';}else{    echo $str.'通过';}
ログイン後にコピー
ログイン後にコピー


ありがとうございます


これを解決するなら、正規表現を使いたくないです~議論のためにアイデアを提供してください

コードは大まかでテストされていません。間違いがある場合はご容赦ください。


$pre='/[\'\"\ \ ]/u';
ログイン後にコピー
ログイン後にコピー


エディタを離れると、あなたの本当の色が明らかになります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート