複数存在するaタグの最後を正規表現で置き換えたいです。 - PHPプロ!Q&A掲示板
キーワード / 正規表現   preg_replace   aタグ  
複数存在するaタグの一番最後を正規表現で置き換えたくて実験しています。
- $text = '<a href="http://test/" title="テスト1">テスト1</a> » <a href="http://test2/" title="テスト2">テスト2</a> » <a href="http://test3/" title="テスト3">テスト3</a>';
- $text = preg_replace('/<a href=".*?" title=".*?">(.*?)<\/a>$/', "<span class=\"pan_current\">$1</span>", $text );
- echo $text;
結果
- <span class="pan_current">テスト1</a> » <a href="http://test2/" title="テスト2">テスト2</a> » <a href="http://test3/" title="テスト3">テスト3</span>
上記のコードを実行すると、最初のaタグから最後のaタグの終わりまで置き換えてしまいます。
- $text = preg_replace('/<a href=".*?" title=".*?">$(.*?)<\/a>$/', "<span class=\"pan_current\">$1</span>", $text );
次は上記のように変更してみたのですが、まったく置き換えてくれなくなりました。
どうすれば
- <a href="http://test1/" title="テスト1">テスト1</a> » <a href="http://test2/" title="テスト2">テスト2</a> » <span class="pan_current">テスト3</span>
hrefとtitleとテストの文字列の中身は随時変更されます。
よろしくお願いします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。