2012-04-11 63 views
0

我想从HTML抓取文本做一些过程,并改变它并重新插入到该HTML代码与PHP。在HTML中处理文本,并重新插入到html结构

<p>This is my sentence <span>and more</span> also <strong>important</strong> part.</p> 

什么是最好的方法?使用preg_ *?我如何重新插入我的文本到HTML样式?

例如,我想删除单词之间的所有双或更多空格。

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

,但我在HTML文本只想应用不是HTML标签,属性或等..

+0

更新说明:是的例子没有实际意义,因为在你的榜样多余的空格会向下折叠成一个单一的空间呢?无论如何,我会认为你提供的'preg_replace'例子会工作得很好? – 2012-04-12 00:00:28

回答

1

看一看的DomDocument。它可以让你对你的HTML进行一些操作。

http://www.php.net/manual/en/domdocument.loadhtml.php

编辑

如果要细说你想用你的HTML为例做什么,我们也许能够提供更具体的答案:)

编辑

要反映更新的答案:HTML中的多个空格应该折叠,但如果你要删除它们,那么你可以尝试以下方法:

$result = preg_replace_callback('/(?<=\>)[\w\s]+(?=\<)/', function($match) { 
    return preg_filter('/\s+/', ' ', $match[0]); 
}, $str); 

我没有任何延伸正则表达式的专家,所以我敢肯定有一个更优雅的方式来做到这一点,但是这可能会为你的工作仍然:首先做一个preg_replace_callback并使用lookaround抓取结束标签和开始标签之间的任何文本片段。然后,将结果通过preg_filter(或preg_replace)以将任何多个空格替换为单个空格。

希望这有助于/工程:)