2012-07-17 40 views
4

如果有一件事我不明白(或学习),那么这就是preg_replace语法。我需要帮助><之间消除所有可能的符号(空格,制表,新线等)。preg_replace:如何?

含义,我有这样的XML:

<?xml version=\"1.0\" encoding=\"UTF-8\"?><bl> <snd>BANK</snd> <rcv>ME</rcv> <intid>773264</intid> <date>17072012</date></bl> 

我需要它来看看:

<?xml version=\"1.0\" encoding=\"UTF-8\"?><bl><snd>BANK</snd><rcv>ME</rcv><intid>773264</intid><date>17072012</date></bl> 

到目前为止,我想出了这一点:

$this -> data = preg_replace('\>(.*?)<\', '><', $data); 

但它不”吨甚至接近我所需要的。一个解决方案将不胜感激。

+0

[转换到EREG预浸(缺少正则表达式的分隔符)](可能重复http://stackoverflow.com/questions/6270004 /转换 - ereg-expressions-to-preg) – mario 2012-07-17 15:55:37

回答

7

你接近,你只需要分隔符和限制您的搜索空格字符:

preg_replace('#>\s+<#', '><', $data); 

哪里#是分隔符,并\s为任何空格字符的简写。

你可以看到它在this example工作。

+0

它也会删除可能的标签符号吗?我更新了这个问题。应该只有空格,但谁知道。 – Peon 2012-07-17 15:31:17

+1

@DainisAbols,[是](http://viper-7.com/z0VO3G) – 0b10011 2012-07-17 15:33:03

+0

尼斯,感谢名单了很多。 – Peon 2012-07-17 15:36:21

1

为了去除空格:

preg_replace('/\s\s+/', ' ', $data); 

为了除去新行:

$string = preg_replace('/\r\n/', "", $data);