2011-10-21 76 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

嗯..從來沒有聽說過解析器。將嘗試一下。謝謝 – Sufendy

回答

0

您可以在爲<?php ?>分隔符一種特殊的異常代碼,因此它的優先級高於通用規則:

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

或者你使用斷言(?=...),並允許->作爲替代。哇,不,這可能太難了。

+0

它似乎沒有工作..嗯,我想我只是去解析器。謝謝! – Sufendy

+0

缺少'/ s'標誌。如果這是你真正想要的,那麼['strip_tags'](http://php.net/strip_tags)也可以工作。 – mario

+0

哈哈......是啊!這就是我想要的:) strip_tags FTW – Sufendy

相關問題