2009-04-17 19 views
9

開始する前に、strip_tags()は機能しません。HTMLを削除するPHP正規表現

は今、

私は、私は非常に不思議なフォーマットされているすべてのHTMLを取り除く必要があり、問題がある、解析する必要のあるいくつかのデータを持っています。 タグは次のようになります。 (スペースに注意してください)

<p> blah blah blah </p > < a href= " link.html " > blah blah blah </a> 

私がしようとしてきたすべてのregexsが働いていない、と私はそれを動作させるために正規表現の整形について十分に知りません。私はタグの内部に何かを保存することには気をつけませんし、できればリンク内のテキストを取り除くことを好むでしょう。

誰でもご存知ですか?

(私は本当にただ座って、1日の正規表現を学ぶ必要がある)

答えて

26

preg_replace('/<[^>]*>/', '', $content) 

仕事をしていますか?ばかプルーフではありませんが、あなたが投稿し何のために働くだろう

+1

前に変数にhtml_entity_decode()を使用している場合、 '*と'あなたも '><'置き換えられますので、代わりに '*'あなたは '+'使えるの動作しますテキストで見つかった場合。 – machineaddict

2

ソリューション:

妙にフォーマットされた
s/<[^>]*>//g 
1

?それは正当なHTMLですが?その場合、私は正規表現でそれに触れません。これがどうやって間違っているのか、なぜそれが悪い考えであるのかの例は軍団です。代わりに、たとえば、不要な空白をクリーンアップするために、HTML Tidyを使用します。

+0

私はこれを投稿しようとしていましたが、あまりにも疲れてそれをわかりやすく語りませんでした。 +1。 – strager

+0

文字列をHTML Tidyで実行すると、< and >の符号が< and >に変更されるので、strip_tags()はそれでも機能しません。私はtidy_parse_string()とtidy_repair_string()の両方を使用していました。私が見ることのできない別の機能はありますか? – Me1000

-2

http://ca3.php.net/strip_tagsはおそらく必要なものです。

+0

strip_tags()は動作しません(私の質問の最初の行に書かれているように)。PHPはformatingのためにHTMLとしてタグを認識しないので動作しません。それも私の最初の考えでした。 – Me1000

-2

これを試してみてください。

<?php 
$text = '<p> blah blah blah </p > < a href= " link.html " > blah blah blah</a>'; 
echo strip_tags($text); 
echo "\n"; 
echo strip_tags($text, '<p><a>'); 
?> 
+0

PHPはHTMLとしてタグを認識しないので、strip_tags()は動作しません(私の質問の最初の行に記載)。それも私の最初の考えでした。 – Me1000

+0

後で追加しましたか?私は完全にそれを逃した...あなたはpreg_replaceを使ってみましたか? –

+0

いいえ、投稿はまったく編集されていません。 私は使用できる正規表現について質問していました。カオスの答えは、私が使用することになる可能性が最も高いですが、もしきれいなhtmlを使ってコードを整理すれば、strip_tagsを使っても問題ありませんが、 ;それでなぜ私は混沌の答えをチェックしていないのですか? :) – Me1000

12

strip_tags()あなたはstrip_tags()

<?php 
$text = '<p> blah blah blah </p > < a href= " link.html " > blah blah blah</a>'; 
echo strip_tags(html_entity_decode($text)); 
?> 
+0

これは受け入れられた答えでなければなりません.. – dendini

+0

なぜ 'html_entity_decode'が必要ですか? – alex

関連する問題