3
我試圖讓我的頭繞過正則表達式,而且我失敗了。Preg_replace括號之間的空格
我有一個字符串,我想匹配並刪除兩個括號之間的每個空格。
例如:
This string (is an example).
將成爲:
This string (isanexample).
我試圖讓我的頭繞過正則表達式,而且我失敗了。Preg_replace括號之間的空格
我有一個字符串,我想匹配並刪除兩個括號之間的每個空格。
例如:
This string (is an example).
將成爲:
This string (isanexample).
您可以使用preg_replace_callback;
$str = "This string (is an example).";
$str = preg_replace_callback("~\(([^\)]*)\)~", function($s) {
return str_replace(" ", "", "($s[1])");
}, $str);
echo $str; // This string (isanexample).
你需要遞歸地做到這一點。一個正則表達式不會這樣做。
$line = preg_replace_callback(
'/\(.*\)/',
create_function(
"\$matches",
"return preg_replace('/\s+/g','',\$matches);"
),
$line
);
這是做什麼的第一個模式找到所有的文字在parens。它將此匹配傳遞給命名方法(或者在這種情況下是匿名方法)。該方法的返回用於替換匹配的內容。
非常好!我現在遇到了一個新問題,但是你的演示程序工作:)詳細說明一下,如果我想要在多行,每行上執行此操作(在每行上查找括號並刪除每行上的括號之間的空格),該怎麼辦? –
沒關係。我錯了。已解決:) –
它也適用於多行。你可以添加到正則表達式'm'修飾符,但不需要。測試:'「這個字符串(就是一個例子)。\ n \ t \ t \ t(foo bar baz)...」 –