2011-10-21 9 views
0

正規表現の理解に問題があります。ここに私が持っているものがあります。PHPファイルで ` - >`をどのように除外しますか?

$ pat = "/ < [^>] *> /";

このパターンは、すべてのHTMLタグを削除するのに適しています。しかし、<?php ?>タグを削除する際に使用すると、タグの間に->が存在すると問題があります。

すなわち

<?php 
    $obj->name; 
    $obj->reset(); 
?> 
some other things outside 

意図した結果

some other things outside 

実際の結果

name; 
    $obj->reset(); 
?> 
some other things outside 

だから、どのように私は私の検索で->を除外することができますか?

+5

[正しいパーザを代わりに試しましたか](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) :) – deceze

+1

大文字、右シフト、および '>'を含む文字列にも問題があります。パーサを使うのが良い;) –

+0

hmm ..パーサーはまだ聞いたことがありません。それを試してみる。ありがとう – Sufendy

答えて

0

こともできますし、コード<?php ?>区切り文字のための特別な例外では、それは一般的なルールより優先されます:

$pat = "/<[?].*?[?]>|<[^>]*>/"; 

それとも、アサーション(?=...)を使用し、代替として->を可能にします。 Wahいいえ、それはおそらくあまりにも難しいです。

+0

それは動作していないようです...うーん、私はパーサーに行くだろうと思う。ありがとう! – Sufendy

+0

'/ s'フラグを無効にします。そして、もしあなたが実際に望んでいたのであれば、['strip_tags'](http://php.net/strip_tags)もうまくいきました。 – mario

+0

笑...ええ!それは私が欲しいものです:) strip_tags FTW – Sufendy