[PHP-users 31452] Re: 特定の文字列に囲まれていないキーワードを置き換える方法
okuyama @ workgroup.jp
okuyama @ workgroup.jp
2007年 2月 13日 (火) 17:06:06 JST
おく@Workgroupです。
美しくは無いですが、タグを退避しておいて、後で戻すという
方法ではだめでしょうか?
preg_match_all("/(<a href[^>]+>.+<\/a>)/i", $text, $atags);
$text = preg_replace("/(<a href[^>]+>.+<\/a>)/i", "#atags#", $text);
preg_match_all("/(<[^>]+>)/i", $text, $tags);
$text = preg_replace("/(<[^>]+>)/", "#tags#", $text);
$pattern = '/([^<]*)(hoge)([^>]*)/' ;
$replace = '$1<a href="./hit.html">hit</a>$3' ;
$text = preg_replace ($pattern, $replace, $text);
while (list($k,$val) = each($atags)) {
$text = preg_replace("/#atags#/", $val[0], $text, 1);
}
while (list($k,$val) = each($tags)) {
$text = preg_replace("/#tags#/", $val[0], $text, 1);
}
echo $text;
動作の確認はしていませんし、複数行に渡る場合などは考慮していないですので、
調整が必要かとは思います。
. ・ . + : ゜. ‥ ゜. .
‥ ゜. . . ・. ・ . +
/ + ゜. ・ . + :
★ from: Atsuji Okuyama
彡彡ミ mail: okuyama @ workgroup.jp
)∂∂b tel : 03-5579-9337
( ー 人__ msn : okuyama_vingt @ msn.com
 ̄/)/ |
|` ̄ "\
PHP-users メーリングリストの案内