[PHP-users 31414] Re: HTML中の置換え処理

江頭 竜二 ryu-ring.woo @ cap.ocn.ne.jp
2007年 2月 7日 (水) 11:19:45 JST


江頭です。質問があいまいですいませんでした。

outputfiltersを利用する前提での質問でした。
preg_replaceを使って出力直前に置換えを行いたいのですが、
以下のように単純にキーワードの置換えを行うと、
Aタグの中のキーワードに対してもリンクを貼ってしまったり、
imgタグのalt属性までリンクを貼ってしまったりと
タグがぐちゃぐちゃになって困ってました。

function smarty_outputfilter($output, &$smarty)
 {
     return preg_replace('keyword',
                         '<a href="link">$1</a>', $output);
 }
   
置換えのいい方法はないでしょうか?という事なんです。
よろしくお願い致します。





ml wrote:
> こんにちは渡辺と申します。
>
> Smartyであれば、
> register_outputfilter()
> という関数を使えば、出力直前の文字列を、どうにでも加工できますよ。
>
> http://www.phppro.jp/phpmanual/smarty/advanced.features.outputfilters.html
>
>
>   
>> k.teke2です。
>>
>> 何を尋ねているのかサッパリ解らないのですが、
>>
>>     
>>> ・テンプレート処理が終わり、出力の直前に、テンプレート内を検索する。(検
>>> 索対象は素のHTMLと思って下さい)
>>> ・指定したタグに囲まれているキーワードにのみリンクを貼る。(bodyタグ、
>>> divタグなど)
>>> ・指定したタグに囲まれているキーワードは無視する。(aタグ、h1タグなど)
>>> ・タグの属性に現れるキーワードは無視する。(imgタグのalt属性など)
>>> ・定型のテンプレートだけに対応するような処理ではなく汎用的な処理にしたい。
>>> (idで指定した場所だけを検索するというのは無しです)
>>>       
>> 上記の事を、実現出来るやり方を1から教えて、と言う事でしょうか?
>> # 「アイデアを教えて」と言う事なので違うのかな?
>>
>> アイデアと言うかヒントだけ。(すみません・・・)
>> ob_start()関数を使うか、、
>> http://sunset.freespace.jp/smarty/SmartyManual_2-6-2J_html/plugins.outputfilters.html
>> のプラグインを作成して、その中で置換する方法が手っ取り早い感じがします。
>> 私は、プラグインを作って対応した記憶があります。
>>
>> 汎用的な関数、がご希望ならプラグインがいいかもしれませんね。
>>
>> 詳細はマニュアルに例も載ってますのでご確認下さい。
>> http://www.php.net/ob_start
>> http://sunset.freespace.jp/smarty/SmartyManual_2-6-2J_html/plugins.outputfilters.html
>> _______________________________________________
>> 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 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
>
>   

-- 
☆■▽〜☆■▽〜☆■▽〜☆■▽〜☆■▽〜

  江 頭  竜 二

  〒840-0123 福岡市城南区長尾3-9-5
   TEL    090-2586-8452
   Email  ryu-ring.woo @ cap.ocn.ne.jp

☆■▽〜☆■▽〜☆■▽〜☆■▽〜☆■▽〜



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