2012-01-18 3 views
0

ここに私の問題があります:php:すべてのタグを削除しますが、テキスト内の "a href"を削除します

私は自分が望むものを入力できるテキストエリアを持っています。

彼は、このテキスト(POSTメソッド)を送信すると、私は「そのまま」保存しておきたいので、サーバー側で私は(ユーザーが入力したもの(データベースに書き込む前に、それをすべてでをフィルタリングしません。多分それは彼がハックしようとした証拠として使うことができます)。

はその後、それを出力する前に、私はこの関数を使用します。

public function textForWeb($texte,$br=true) 
{ 
    if ($br) { 
    return 
     mb_ereg_replace("((\r)?\n)", "<br />", 
     htmlentities(
      stripslashes($texte), 
      ENT_QUOTES, 'UTF-8' 
     ) 
    ); 
    } 
    else { 
    return 
     htmlentities(
     stripslashes($texte), 
     ENT_QUOTES, 'UTF-8' 
    ); 
    } 
} 

ので、テキストが適切にろ過し、エンコードされたUTF-8のままです。 <a href="http://url">xxx</a>手つかずされる:

は、しかし、問題は、私はをすべてこれらのテキストがしたいということです。私。私がそれを表示すると、リンクは "http://"との中のの中のjavascriptなしのリンクのみが "クリック可能"になります。

たとえば、今表示されている方法を確認できます。here。発表の最後の行を参照してください?私はウェブサイトへのリンクをクリック可能にしたいと思います。

どうすればよいですか?

+1

なぜstrip_tags()を使用しないのですか?これは、javascriptのliksを解決しませんが、まだ単一の関数を解決します。ストリップタグの後にtouはhttpを使用してすべてのhref属性を削除できます。おそらく正規表現で。 – Kristian

+0

はい、しかし、 'href ="(?! http) 'だけを取り除くとそれほど悪くはありませんが、構文が壊れる可能性はありますが、そのリンクのolnyはjavascriptでおそらくexcecuteできませんでした。 – Kristian

答えて

関連する問題