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
- $を検索対象文字列の終わりにのみマッチ。これが無い場合、$は改行文字の前でもマッチする
従って前述のコードの様な結果となる。
TrackBack URL :
Comments (0)
コメントはまだありません»
コメントはまだありません。
この投稿へのコメントの RSS フィード。TrackBack URL
コメントする