[PHP-users 31448] Re: 特定の文字列に囲まれていないキーワードを置き換える方法

YuGo yu.gotou @ gtec-ni.com
2007年 2月 13日 (火) 09:53:15 JST


こんにちは。
例えば、下のようなのを試してみたらどうでしょう。
開始タグと終了タグに囲まれていないhogeを!hit!に置き換えようとしています。
$str = '<a href="hogeum">phogessd</a><img src="#" alt="shoges" />hoge' ;
$pattern = '/([^<]*)(hoge)([^>]*)/' ;
$replace = '$1!hit!$3' ;
echo preg_replace ($pattern,$replace,$str) ;


それと、メールに書いてある抽象的な例ではなく本物のhtmlを出したほうがいい
案が集まると思います。


江頭 竜二 wrote:
> お世話になります。
> 
> preg_replaceなどを用いて、html文章中の特定のキーワードを
> リンク付の文字列に置き換えたいと考えています。
> 
> その際に、アンカータグに囲まれたキーワードと、
> imgタグのalt属性などに含むキーワードは無視させたいのです。
> どなたかいい方法をご存知ではないでしょうか?
> 
> (例)
> <html>
> <head>
> <meta name="keywords" content="キーワード" /> ====> ( 無視 )
> </head>
> <body>
> ・・・・・・・・・・・・
> キーワード ===========>( <a href="・・・">キーワード</a>に変換 )
> ・・・・・・・・・・・・
> <a href="・・・">・・・キーワード・・・</a> ===============>( 無視 )
> ・・・・・・・・・・・・
> キーワード ===========>( <a href="・・・">キーワード</a>に変換 )
> ・・・・・・・・・・・・
> <img src="・・・" alt="・・キーワード・・" /> =============>( 無視 )
> ・・・・・・・・・・・・
> </body>
> </html>
> 
> ※・・・は、テキストを表しています。
> ※「キーワード」は検索対象の文字列を表しています。
> 
> 前回、似たような質問をしたのですが、質問内容が悪かったみたいで、
> 流れてしまったようです。あれから試行錯誤したのですが、
> どうしても思いつかなくて。。
> どうか宜しくお願い致しますm( _ _ )m
> 
> 江頭
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 


PHP-users メーリングリストの案内