2010-08-10 45 views
0

我希望做這樣的事情得到來自該行的相對匹配:的preg_replace完全相反

$input = "21.asdf*234true;asdf0--11" 
$_BOOL_ ="/(true|false)/i"; 
$output = preg_replace($_BOOL_, '', $input); 
//Result: "21.asdf*234;asdf0--11" 
//Desired result: "true" 

這ofcourse在PHP 5.3是

$output = preg_filter($_BOOL_, '', $input);

但我在5.2 ,並不知道如何得到我想要的東西...建議(Ubuntu的編譯5.3除外)?

回答

1

你的例子還是有點含糊。

如果字符串包含true或false,則輸出應爲「true」?

如果是這種情況,你正在尋找preg_match()我想。

如果您希望在字符串中包含true時返回「true」,如果它包含false,則返回「false」,我認爲您可能必須使用一系列函數(如preg_match()或strpos())來匹配每個條件分開。

+0

我會接受這個,因爲我剛剛意識到我在這裏的思想缺陷。我一直在使用這個包裝來使用預定義的正則表達式來去除字符,但是你讓我意識到這允許字符串像「truefalsefalse」,這是我不想要的。我將使用preg_match來預製我想要的東西。謝謝。 – Incognito 2010-08-11 13:50:22

0

如何:

$output = preg_replace($_BOOL_, '', preg_grep($_BOOL_, $input)); 

編輯:再次在你的問題看,我不知道我們在談論同樣的事情。對於輸入數組中的每個字符串,preg_replace執行它可以進行的任何替換並返回結果;任何與正則表達式不匹配的字符串都會保持不變。 preg_filter是相同的,除了它丟棄不匹配正則表達式的字符串。我不會稱這些對立面。如果這不是你想要的,也許你可以提供一些例子。

+0

我在上面添加了一個例子。 – Incognito 2010-08-11 13:22:31