【发布时间】:2012-04-28 20:13:05
【问题描述】:
我想用正则表达式搜索和替换一些标签。
这是我的起始字符串:
<p>some bla bla bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p>other bla bla bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p>other bla bla bla</p>
这就是我想要的结果
<p>some bla bla bla</p>
<ul><li>bla bla and bla</li><li>bla bla and bla</li>
<li>bla bla and bla</li><li>bla bla and bla</li><li>bla bla and bla</li></ul>
<p>other bla bla bla</p>
<ul><li>bla bla and bla</li><li>bla bla and bla</li>
<li>bla bla and bla</li><li>bla bla and bla</li>
<li>other bla bla bla</li></ul>
所以我想用<li> 和</p> 替换所有<p>• 或<p>&bull; 用</li> 并重新组合<li></li><li></li><li></li> 中的每组<ul></ul>
目前我已经做了一些测试,下面的代码就是结果,但我认为这不是最好的方法,重组部分也不完整。
搜索和替换
// base string
$test = '<p>some bla bla bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p>other bla bla bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">•bla bla and bla</p>
<p>other bla bla bla</p>';
// First replace, I don't know but I can't find any • or • with regexp
$text = str_replace(array('•', '•'), '!SUB!', $text);
$regexp = '/(<p( class="normale"){0,}>(!SUB!))(.*?)<\/p>/';
// replace bulled paragraph with li tags
$text = preg_replace($regexp, "<li>$4</li>\n", $text);
但是我找到的重新组合的部分非常困难,我不知道如何进行
【问题讨论】:
-
1.如果您有多个问题,请发布多个问题。 2. 请重新提出你的问题,因为你不可能知道你真正想要什么。
-
那么...您想要生成损坏的HTML? (
</p>没有<p>因为你替换了它) -
不,我想用
<li>{some text}</li>替换所有<p>&bull;{some text}</p>..该死的复制粘贴-.- -
所以你的提示是 htmlentities 所有的公牛,并在 xml 解析器中解析字符串,搜索具有 • 的每个段落,替换为 li 并将所有移动到一个名为 ul 的父级中。用几句话写的