我正在寫一個WordPress插件,其中一個功能是刪除重複的空格。用preg_replace匹配重複的空格
我的代碼如下所示:
return preg_replace('/\s\s+/u', ' ', $text, -1, $count);
我不明白爲什麼我需要的
u
修改。我已經看到其他插件 使用preg_replace
而不是 需要修改它的Unicode。我相信我有一個WordPress的默認安裝 。如果沒有修飾符,代碼 將用Unicode代替所有空格 而不是空格替換字形。
使用
u
修飾符,我沒有得到 字形,並且它不替換所有的空格。
下面的每個空間都有1-10個空格。正則表達式僅從每個組中刪除空間。
前:
This sentence has extra space. This doesn’t. Extra space, Lots of extra space.
後:
This sentence has extra space. This doesn’t. Extra space, Lots of extra space.
$count
= 9
我怎樣才能讓正則表達式替換整場比賽用一個空間?
更新:如果我嘗試這與普通的PHP,它工作正常
$new_text = preg_replace('/\s\s+/', ' ', $text, -1, $count);
,當我在WordPress插件中使用它,它只是打破。 我使用這個功能的過濾器:
function jje_test($text) {
$new_text = preg_replace('/\s\s+/', ' ', $text, -1, $count);
echo "Count: $count";
return $new_text;
}
add_filter('the_content', 'jje_test');
我曾嘗試:
- 刪除所有其他過濾器上the_content
remove_all_filters('the_content');
- 更換過濾器的加入the_content的優先級,更早或更晚
- 各種排列
\s+, \s\s+, [ ]+
等 - 即使有一個空字符串替換所有單個空格,不會取代空間
我已經添加了一個例子,代碼的結果在這裏:http://pastebin.com/hm2JMX2w我用'R'代替了空格,所以它會更清楚什麼被替換,什麼是'噸。我正在使用WordPress的LAMP新安裝,似乎解決了unicode問題。 – jjeaton 2010-07-09 04:18:11
有沒有另一種解決方案,我錯過了,不使用正則表達式? – jjeaton 2010-07-09 23:19:12