複数存在するaタグの最後を正規表現で置き換えたいです。 - PHPプロ!Q&A掲示板

1416

  • 0P

複数存在するaタグの最後を正規表現で置き換えたいです。

質問日時 / 2008年8月22日 15:48    回答数 / 2件

Questioner:  cubecube  このエントリーをはてなブックマークに追加 

キーワード / 正規表現    preg_replace    aタグ   

こんにちは、質問させて下さい。

複数存在するaタグの一番最後を正規表現で置き換えたくて実験しています。

  1. <?php
  2.   $text = '<a href="http://test/" title="テスト1">テスト1</a> &raquo; <a href="http://test2/" title="テスト2">テスト2</a> &raquo; <a href="http://test3/" title="テスト3">テスト3</a>';
  3.   $text = preg_replace('/<a href=".*?" title=".*?">(.*?)<\/a>$/'"<span class=\"pan_current\">$1</span>"$text );
  4.   echo $text;
  5. ?>

結果
  1. <span class="pan_current">テスト1</a> &raquo; <a href="http://test2/" title="テスト2">テスト2</a> &raquo; <a href="http://test3/" title="テスト3">テスト3</span>

上記のコードを実行すると、最初のaタグから最後のaタグの終わりまで置き換えてしまいます。

  1. $text = preg_replace('/<a href=".*?" title=".*?">$(.*?)<\/a>$/', "<span class=\"pan_current\">$1</span>", $text );

次は上記のように変更してみたのですが、まったく置き換えてくれなくなりました。

どうすれば
  1. <a href="http://test1/" title="テスト1">テスト1</a> &raquo; <a href="http://test2/" title="テスト2">テスト2</a> &raquo; <span class="pan_current">テスト3</span>
のように最後のaタグを変換出来るでしょうか?
hrefとtitleとテストの文字列の中身は随時変更されます。

よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01tezcello質問文通りの条件であれば、 >>CODE $text = preg_r
 ┗A01-1cubecube無事出来ました。 ありがとうございました。

回答一覧

並び替え:

A01
answerertezcello [8月22日 16:59]

質問文通りの条件であれば、
  1. $text = preg_replace('/(.*)<a href=".*?" title=".*?">(.*?)<\/a>$/', "$1<span class=\"pan_current\">$2</span>", $text );
で、よろしいのでは?

この意見に回答する

ツリーへ TOPへ

A01-1
replyercubecube [8月22日 22:00]

無事出来ました。
ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)