![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
特定のタグに囲まれたテキスト部分の特定文字列を置換したいと思うのですが
なかなか解決策が浮かばず困っています。
例えば
$str = <<< EOM
<a href="watanabe/nakamura/test.html" alt="watanabesan">これがwatanabeですよ</a>
<a href="watanabe/nakamura/test.html" alt="nakamurakun">これがnakamuraですよ</a>
EOM;
という文字列があります
このaタグ間のテキスト部分の「watanabe」と「す」にだけ()を付けたい場合
どうすればいいでしょうか?
希望の結果
---
<a href="watanabe/nakamura/test.html" alt="watanabesan">これが(watanabe)で(す)よ</a>
<a href="watanabe/nakamura/test.html" alt="nakamurakun">これがnakamuraで(す)よ</a>
---
単純に置換しただけではタグ内の該当文字列も置換されてしまい困っています
foreach (array("watanabe","す") as $keyword){
$str = eregi_replace($keyword,'('."\\0".')',$str);
}
---
<a href="(watanabe)/nakamura/test.html" alt="(watanabe)san">これが(watanabe)で(す)よ</a>
<a href="(watanabe)/nakamura/test.html" alt="nakamurakun">これがnakamuraで(す)よ</a>
---
正規表現を使ってタグ内の文字を抽出という方法も考え抽出は出来たのですが
置換をかけてタグ間に戻す所でつまずいてしまいました。
何か良い方法はありますでしょうか?
アドバイスよろしくお願いします。
No.1ベストアンサー
- 回答日時:
/*
今回、そちらが提示した条件であれば、以下のスクリプトで対応できますが、
文字列の規則性が変わった場合などは対応できないかと思われますので、
誰か 正規表現に詳しい方に 後はお任せします。
今回、書いたのは こんな感じですが、他のアプローチの仕方もあります。
*/
$str = '
<a href="watanabe/nakamura/test.html" alt="watanabesan">これがwatanabeですよ</a>
<a href="watanabe/nakamura/test.html" alt="nakamurakun">これがnakamuraですよ</a>';
$DimRaplace = array("watanabe" => "(watanabe)" , "す" => "(す)");// 括弧をつけるのは自動化できるが、とりあえず、手入力で。
$DimData = explode("\n" , $str);
$out = "";
foreach($DimData as $i => $dat) {
$key = strip_tags(trim($dat));// 1.タグを取り除いた文字列。今回は「これがwatanabeですよ」他
$key02 = strtr($key , $DimRaplace);// 2.↑ 1を元に $DimRaplace に従い 文字列の置き換え
$out.= str_replace($key , $key02 , $dat);// 更に、元の文字列を対象とし、1と2の置き換え。
}
print nl2br(htmlspecialchars($out));
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数にHTMLを代入する場合
-
正規表現でタグの置換をしたい...
-
「ブログのコメント欄にリンク...
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
ファイルから読み取った改行文...
-
文字列中の両丸括弧を取り除くV...
-
エクセルでの漢字、カタカナ、...
-
エスケープ文字の復帰(¥r)と...
-
改行コードが半角スペースにな...
-
jsp 改行コードで改行させて表...
-
エクセルVBA 文字列領域が不足...
-
VBAを使ってHTMLソースから特定...
-
COBOLの改行
-
C# DataGridViewのセルを改行禁...
-
VBA ASC関数で変換できない文...
-
文字列の括弧について(初心者)
-
○分から○時間○分に変換
-
メッセージボックスで1025文字...
-
ソースコードの1行が長いとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Nvuで作成したhtmlをコピペして...
-
変数にHTMLを代入する場合
-
タグにはさまれている文字以外...
-
phpの正規表現でstyle="●●"を削...
-
htmlのソースからテーブルの値...
-
[php][正規表現]タグ以外を削除...
-
正規表現でタグの置換をしたい...
-
URLの連続アクセス
-
csobjというタグについて
-
reuterの記事をbeautiful.soup....
-
JSFタグのfタグとは
-
PHPの正規表現でHTMLタグの内容...
-
htmlspecialchars関数を使いな...
-
Aタグってなんですか?
-
PHPスクレイピングが上手くいき...
-
preg_replaceでの正規表現によ...
-
Strutsでリンクを動的に生成したい
-
URLの結合
-
タグをとるのに、SAX
-
アフィリエイトタグについて質...
おすすめ情報