PHPで正規表現の検証には preg_match_allが便利
2014/06/26
preg_match_allで正規表現のチェック
PHPで正規表現が正しいか、間違っているかの検証には preg_match_allが便利
Swiffyで Base64でエンコードされた画像を置換する際に、その画像の部分を正規表現で表現する必要があったわけですが、正規表現には不慣れなこともあり、正規表現の記述があっているのか、間違っているのかの確認が非常に悩ましいところでした。
ですが、あれこれと試していたところ「preg_match_all」という便利な関数があることを知りました。
「preg_match_all」は「繰り返し正規表現検索を行う」関数です。
preg_match_all ( $pattern, $subject, $matches );
$subject(文字列)の中にある $pattern(検索する文字列)を検索し、$matchesの中にその結果を配列として編集してくれます。
これを、下記のように配列を見やすく表示してくれる「print_r」(「var_dump」でもOK)と組み合わせて使う事で、記述している正規表現にヒットしているものが何かがすぐに分かるのです。
preg_match_all ( $pattern, $subject, $matches );
print_r ( $matches );
正規表現をあれこれと書き直ししながら、何がヒットしているのか、どこの記述が違うのかを簡単に見る事が出来ますので正規表現を書くのに非常に便利でした。
正規表現は、とっつきにくい印象がありますが、具体的に見ながら記述することが出来れば少しはとっつきにくさも解消されるんじゃないでしょうかね。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入
標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。
-
-
乱数発生器(パスワード生成サービス)がバージョンアップで高速化!
乱数やパスワードを生成する乱数発生器を高速化!重複しない10桁、20桁の文字列を10万件、20万件と生成することも可能!イベントのキャンペーンのシリアルコードなどにも利用可能!
-
-
PHPで配列の値をダブルクオーテーションで囲んでimplodeでカンマ区切りにする方法
PHPで配列の値を、preg_replace関数でクォーテーションで囲み、implode関数で「,(カンマ)」で区切ってテキスト化する方法。この方法であれば配列が空でも分岐の処理は必要なし!
-
-
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。また、マニュアルにはない注意点なども解説。
-
-
ECCUBEを開発環境から本番ドメインに変更でエラーが・パス変更について
レンタルサーバでサーバ会社から割り当てられたURLで開発し、本番公開時にドメインを当てたらエラーが!そんな場合の対処方法の解説。対処方法は簡単ですが管理画面からは対応不可。
-
-
路線・駅検索のために緯度経度からPHPで2点間の距離を計算する処理解説
路線・駅検索の仕組みの構築は大変。それを簡易に実装するために緯度経度を元に距離計算をする仕組みを考案。まずは2点間の距離を計算する仕組みを解説し、距離計算にまつわる関連技術も紹介。
-
-
ECCUBE mtb_constants initパラメータ設定の項目を追加する方法
ECCUBEのパラメータ設定で設定できる項目を追加する方法を説明します。
-
-
リダイレクトループが原因で「ERR_TOO_MANY_REDIRECTS」「このページを表示できません」が出たときの対策12事例+α
リダイレクトループ、自動転送設定ループの原因の解説とその対応方法を含め事例 12例を挙げて説明。
-
-
PHPで月末から1ヶ月後「+1 month」を算出すると想定する日付にならない場合がある
PHPでは月末の1ヶ月後が想定した日付にならない場合がある。原因はバグではなくPHPの1ヶ月後の定義によるもの。なので必要とする日付を定義しそれに合わせてDateTime、modifyを使用して算出方法を解説している。
-
-
ECCUBEの新規追加ページがInternal Server Error・Not Foundに
ECCUBEで新規追加したページがInternal Server Errorに!原因はファイルのパーミッションの場合が多くその対処方法とプログラムの修正ポイントを解説。Not Foundも解説。