@blog.justoneplanet.info

日々勉強

preg_matchにおける$の注意点

preg_matchにおける$の挙動を知る。

<?php
$str = "01237";
$str = preg_replace("/37$/", '', $str);
var_dump($str);
//string(3) "012"

当然だ。次に以下を実行する。

$str = "01237\n";
$str = preg_replace("/37$/", '', $str);
var_dump($str);
//string(4) "012\n"

ん?文字列の最後尾の改行コードが$で捉えきれなかった。

$str = "01237\n";
$str = preg_replace("/37$/D", '', $str);
var_dump($str);
//string(6) "01237\n"

上述のようにDオプションを加えると期待した動作になる。

■まとめ

$
行の末尾
D
$を検索対象文字列の終わりにのみマッチ。これが無い場合、$は改行文字の前でもマッチする

従って前述のコードの様な結果となる。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment