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
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
PHPパーミッション変更のchmod関数・モードを変数で指定する方法
パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。
-
-
PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う
PHPには日時をオブジェクトとして生成する関数「DateTimeImmutable」「DateTime」が用意されている。これを利用して1ヶ月後、月初日、月末日、5日後などを指定して日付を取得できる。
-
-
PHP range関数を使って階乗と重複組み合わせを計算
PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。
-
-
AdminerはphpMyAdmin代替のデータベース管理ツール
AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。
-
-
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。
-
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
-
ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集
ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。
-
-
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
お問い合わせ等のメールフォームから送ったメールがスパム扱いされる!その対策としてライブラリ「Phpmailer」を使う方法を解説。関数化していますのでコピペでOK。
-
-
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。
-
-
Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace
ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。