只是一个简短的问题,这两行总是会给出相同的结果,考虑到XML请求或响应是否给出了?
str_replace( array( "\n", "\t", "\r", "\r\n" ), '', trim( $xml ) );
preg_replace( '#>\s+<#', '><', $xml );
如果不是,我该如何制作preg_replace
?
提前谢谢。
答案 0 :(得分:4)
preg_replace
比str_replace
更受约束(它只匹配尖括号外的空格),\s
包含空格字符。此外,不会替换像<blah> \r \n \t TEXT \t\t</blah>
这样的字符串,而是保留空格。
事实上,这两者在某些方面都不会影响空白。
preg_replace
的等效str_replace
只是('/[\r\n\t]/','',$xml)
答案 1 :(得分:2)
没有。例如,如果你有类似的东西:
<tag att="1"
att="2"
att="3">text</tag>
他们会给出不同的结果。但是,如果我可以提供建议,请不要为此目的使用正则表达式。
答案 2 :(得分:0)
它们不相似,因为:
如果第一个变体适合你,那么在我看来它比正则表达式更好。否则,这可能是搜索到的:
preg_replace( '#>\s+<#m', '><', $xml );