2013-08-06 74 views
0

我試圖使用preg_replace從HTML變量中刪除所有複選框。這是我使用的是什麼現在:PHP RegEx刪除所有複選框

echo preg_replace('/<input type="checkbox".*autocomplete="off">/', '', $html); 

要更換複選框類似如下:

<label><input type="checkbox" name="65[]" id="289" value="289" validate="required:true" autocomplete="off"> a. date of encounter</label> 

這並不在所有的工作。如果我將正則表達式更改爲:

<input type="checkbox".*"> 

然後它工作但刪除太多。

+2

**不要使用正則表達式來解析HTML。使用合適的HTML解析模塊**您無法可靠地使用正則表達式解析HTML,並且您將面臨悲傷和挫折。只要HTML從你的期望改變,你的代碼就會被破壞。有關如何使用已經編寫,測試和調試的PHP模塊正確解析HTML的示例,請參閱http://htmlparsing.com/php。 –

+0

我解析的HTML不會隨着我輸出它的代碼而改變。正則表達式是我需要的,謝謝。 – jfreak53

+0

如果您製作輸出HTML的代碼,爲什麼不更改輸出它的代碼而不輸出您嘗試消除的HTML? –

回答

2
preg_replace('/<input type="checkbox"(.+?)autocomplete="off">/is', '', $html); 
+2

爲了讓將來的讀者清楚,原始問題中的'(。*)'是一個匹配最長字符串的貪婪匹配。添加'?'使它成爲一個非貪婪或簡潔的匹配,匹配儘可能最短的模式。另外,請注意,這個答案將'*'的0個或更多個變爲'+'的1個或更多個。 –