[PHP-users 31453] Re: 特定の文字列に囲まれていないキーワードを置き換える方法
oppara
mlml @ oppara.tv
2007年 2月 13日 (火) 17:08:07 JST
こんにちは、大原と申します。
一度に置換するのは難しかったので、
>> preg_replaceなどを用いて、html文章中の特定のキーワードを
>> リンク付の文字列に置き換えたいと考えています。
>> その際に、アンカータグに囲まれたキーワードと、
>> imgタグのalt属性などに含むキーワードは無視させたいので
>> す。
> '>'と、'/a'が後ろに続かない'<'に挟まれてるキーワード
$reg = '|>(?:((?!>).)*)<(?!/a)|s';
$html = <<<__EOF__
<p class="hoge">moge hoge<a href="hoge.html"
title="hoge">hoge</a>...</p>
<p class="hoge"><img src="hoge.jpg" alt="hoge moge" /> hohogege
hoge .</p>
__EOF__;
echo preg_replace_callback( $reg, 'doSomething', $html );
function doSomething( $matches ) {
return preg_replace( "|\b(hoge)\b|", '*$1*', $matches[0]);
}
こんな感じ?(抜けありそうですけど)
PHP-users メーリングリストの案内