dポイントプレゼントキャンペーン実施中!

空白があってもなくてもマッチするようにするにはどうやって表現したらよいでしょうか。

マッチ条件:"佐藤ヨシオ"
対象:"佐藤 ヨシオ","佐藤ヨシオ","佐藤ヨ シオ";

これらすべてにマッチするようにしたいです。

x:拡張正規表現(空白が無効)
と他サイトで見かけたのですが、これをどうやって使えばいいのかわかりません。

preg_match("佐藤ヨシオ",$val);
このようにやってみてもうまく動いてくれません。

ヒントでもいいので教えていただけたらと思います。

A 回答 (3件)

すでに回答があるように、明示的に「0文字以上空白」とマッチさせるとか


あらかじめ空白を削除しておくとか。


> x:拡張正規表現(空白が無効)
> と他サイトで見かけたのですが、これをどうやって使えばいいのかわかりません。

これが無効にする空白は、正規表現のパターン中のものです。
例えば、/ [ a b c ] /x と/[abc]/が同じになる、というものです。

検索される側の文字列ではありません。

この回答への補足

ありがとうございます。
なるほど、x:拡張正規表現(空白が無効)について理解できました!!

今テストしてみたのですが、今度はサーバーの不調で確認できていません。
ぐだぐだっだ。

確認できましたらお礼で報告いたします。

補足日時:2011/01/28 13:31
    • good
    • 0
この回答へのお礼

大変遅くなりましたがありがとうございました。

お礼日時:2016/06/29 11:48

debu120tさん、こんにちは。



 半角と全角の空白のみ、どちらでも良いのでしたら。
 mb_ereg_replace にて、最初にその半角と全角の空白を抜き取ってしまい、それをその例での 佐藤ヨシオ とpreg_match してみるのはどうでしょうか。

この回答への補足

ありがとうございます。
その方法がありました。
理解できました!!

今テストしてみたのですが、今度はサーバーの不調で確認できていません。
ぐだぐだっだ。

確認できましたらお礼で報告いたします。

補足日時:2011/01/28 13:30
    • good
    • 0
この回答へのお礼

大変遅くなりましたが参考になりました。
ログイン情報をなくしていたのでやっとログインできるようになり、お礼をしていないことに今気がついた次第です。

お礼日時:2017/11/10 08:53

スペースもチェックしてはいけないの?



<?PHP
mb_internal_encoding("UTF8");

$pattern="/佐 *?藤 *?ヨ *?シ *?オ/u";
$val=<<<eof
佐藤 ヨシオ
佐藤ヨシオ
佐藤ヨ シオ
eof;
preg_match_all($pattern,$val,$match);
print_r($match);
?>

タブも含めてだと\sつかったりとか
$pattern="/佐\s*?藤\s*?ヨ\s*?シ\s*?オ/u";

この回答への補足

ありがとうございます。
今回は膨大な量なのでできれば処理を少なくしたいと思っています。

しかしこんなやり方もあるのかと、知ることが出来、よかったと思います。

補足日時:2011/01/28 13:35
    • good
    • 0
この回答へのお礼

大変遅くなりましたがありがとうございました。助かりました。

お礼日時:2016/06/29 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!