2014-11-01 73 views
1

我嘗試用一​​個空格替換這些標記的所有變化:正則表達式:替換文本:S-標籤

<text:s></text:s> 
<text:s/> 
<text:s anyattributes/> 

<text:span>應該不會受到影響。

preg_replace("/<\\/?text:s(\\s+.*?>|>)/", " ", $string); 

我在做什麼錯?

+0

存在邊界匹配嗎? [用0123代替](http://stackoverflow.com/questions/26685034/replace-texts-with-whitespace) – Shubanker 2014-11-01 01:24:14

+0

我認爲我的解決方案是正確的,但事實並非如此。這個問題是一個regEx問題。鏈接的線程是關於xml。所以我提出了一個新問題。對不起,如果這是錯誤的。 – user3142695 2014-11-01 01:31:59

回答

1

使用下面的正則表達式並用空格替換匹配。

<\/?text:s\b[^<>]*> 

代碼將是,

preg_replace("~<\/?text:s\b[^<>]*>~", " ", $string); 

DEMO

\b字邊界可以幫助你完成這項工作。由於\b一個字和一個非單詞字符之間的匹配,上述正則表達式將不是字符串<text:span>,因爲沒有一個字你爲什麼重複自己的問題sp之間