2014-11-01 75 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之间