2015年10月20日火曜日

PHPの正規表現で文字列を抽出


ある法則で書かれた文章をphpを使って文字列を抽出する方法です。(備忘録)
デザイナーであるため良く忘れますw

置換にはpreg_replaceを使いますが、これでも抽出はできます。この方法はまた説明します。

ここではpreg_matchでターゲットとなる文字列を正規表現で抽出する方法です。

$string = '<img src="http://nonull.jp/img/001.png" />';
preg_match('/src="([^\"]+)"/u',$string, $match);
$var = $match[1];

画像のパスを取得したい場合の記述です。
$varにはhttp://nonull.jp/img/001.pngが代入されます。

また、ページ全体などある規則で記述されている内容を抽出したい時もあると思います。
そのようなときはpreg_match_all関数を使います。

$string = "<div>1</div><div>2</div>";
preg_match_all("/<div>(.*?)<\/div>/", $string, $matches);
foreach($matches[1] as $var) {
 echo $var;
}

この場合$varに12と代入されます。
通常<div>は単体で使われていません。
<div>が入れ子になっていたり、class属性が入っていたりもしますので
二行目の正規表現を少し変えたりする必要があります。
三行目の$matchesは$matches[0]と変えると
$varには<div>1</div><div>2</div>が代入されます。

要は[0]の場合は/~/のマッチした情報
[1]の場合は(~)のマッチした情報となります。

正規表現はわかっておくとperlやjavascriptなどにも使われていますので
理解しておくといいかもしれません。
デザイナーにとってはとっつき辛いですがねw

ホームページ制作 東京!null ホームページ制作 東京!null

0 件のコメント:

コメントを投稿