php‎ > ‎

正規表現でURLが任意のサイトと同じか調べる

慣れていないと何がなんだか訳が分からなくなる正規表現だが、この正規表現で任意のURLが任意のサイトと同じが調べる書式を記載しておく。

任意のサイトと同じかどうかはまず、自分のいるサイトを取得する必要がある。

$cpath='/aaa/bbb/ccc.php';
$cpath=preg_replace('/([^\/]*)\.php$/i', '', $cpath);

これで$cpathの中には"/aaa/bbb/"が入ることになる。
やってることの意味は以下の通り。
何から始まってもよいが、"/"以外の何らかの文字が続き、".php"で終わっている文字列を対象とする。
この対象となる文字列をブランクに置き換えているので最後のファイル名部分が消されることになる。

次にデータベースから取得する際に正規表現を利用して同じサイトのレコードを抽出する。
データベースのnameフィールドにURLが入っているものとする。

$sql='select * from sample_table where name REGEXP '."'".$cpath.'([^/]*)\.php$'."'";

このSQLを実行すると"/aaa/bbb/*.php"のレコードを抽出することになる。(*はワイルドカード)
正規表現のやってることの意味は以下の通り。
"/aaa/bbb/"からはじまり、"/"以外の何らかの文字列に続き".php"で終わる文字列を対象に取得する。

何に使えるのか。。。と問われると困るがCMSに使えるかな。。。?
Comments