[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 メーリングリストの案内