2011-10-24 39 views
2

preg_replace和preg_match忽略\ h(水平空白)和\ v(垂直空白)標誌,我找不到原因。PHP preg_replace忽略 h和 v標誌

$text = preg_replace('/[\h]+/', ' ', $text); 

即行應該以一個單一的空間取代的連續的水平空白字符的任意字符串。相反,它取代了字母'h'。

我安裝了PCRE 6.6。我知道[:blank:]作爲\ h的替代品,但是我找不到\ v的任何替代品(當然,我更願意弄清楚爲什麼這些工作不起作用,而不是用某些東西替代它們其他)

回答

2

它在您的PCRE版本中不受支持。

http://www.pcre.org/changelog.txt

更改日誌說\h已經在版本7.2

+0

好的,謝謝。我誤解了PCRE文檔,它說\ h和\ v是在* Perl * 5.10中添加的,我誤解爲PCRE 5.10 – andrewtweber

1

被添加如果有幫助,水平空白只是空間和標籤。所以[ \t]

+0

這是一個有用的答案,爲什麼選擇一個下來的選民? – anru