<a href="http://www.example.com/foo/bar/" title="foo">
<img src="http://www.example.com/foo/bar/" alt="foo" />
</a>
href属性でのみfooという単語をpreg_replaceするにはどうすればよいですか?
注:ページには複数のリンクがあります。
<a href="http://www.example.com/foo/bar/" title="foo">
<img src="http://www.example.com/foo/bar/" alt="foo" />
</a>
href属性でのみfooという単語をpreg_replaceするにはどうすればよいですか?
注:ページには複数のリンクがあります。
あなたはこれを行うことができます:
$str = preg_replace('/(href="[^"]*)foo/', '$1replacement', $str);
または、後読みを使用することもできます。
$str = preg_replace('/(?<=href="[^"]*)foo/', 'replacement', $str);
'
これは、区切り文字がなく、属性内にエスケープがない場合にのみ機能することに注意して"
ください。
これが、正規表現でHTMLを操作するのではなく、DOMパーサーの使用を実際に検討する必要がある理由です。
更新:パーサーを使用した適切な実装は次のとおりです(Googleに最初に表示されたのでPHP Simple HTML DOMパーサーを選択しました):
require "simple_html_dom.php";
$html = file_get_html($filename);
foreach($html->find('a') as $element)
{
$element->href = preg_replace('/foo/', 'replacement', $element->href);
}
echo
これでファイルに保存または保存する$html
と、正しく置き換えられたHTMLが含まれます。(DOMパーサーの使用はとても簡単です。);)