簡體   English   中英

搜索,替換並用regexp和php重新組合

[英]search, replace and regroup with regexp and php

我想搜索並用正則表達式替換一些標簽。

這是我的起始字符串:

<p>some bla bla bla</p>
<p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
<p>other bla bla bla</p>
<p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
<p class="normale">•bla bla and bla</p><p class="normale">&bull;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>

所以我想替換所有<p>•<p>&bull; <li></p></li>並重新組合<ul></ul>每個<li></li><li></li><li></li> <ul></ul>

目前,我已經進行了一些測試,下面的代碼是結果,但是我認為這不是最好的方法,並且重組部分還不完整。

搜索和替換

// base string
$test = '<p>some bla bla bla</p>
  <p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
  <p class="normale">•bla bla and bla</p><p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
  <p>other bla bla bla</p>
  <p class="normale">&bull;bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
  <p class="normale">•bla bla and bla</p><p class="normale">&bull;bla bla and bla</p>
  <p>other bla bla bla</p>';
// First replace, I don't know but I can't find any • or &bull; with regexp
$text = str_replace(array('•', '&bull;'), '!SUB!', $text);
$regexp = '/(<p( class="normale"){0,}>(!SUB!))(.*?)<\/p>/';
// replace bulled paragraph with li tags
$text = preg_replace($regexp, "<li>$4</li>\n", $text);

但是重新組合我發現的部分非常困難,而且我不知道如何進行

我同意@Colin; 但是,上面的“ Searching and Replace代碼是否可以滿足您的要求? 即找到了•字符? 如果是這樣,我建議不要使用!SUB! 替代品,而是將其作為您的一部分

正則表達式:
/(<p(class =“ normale”)?>(&bull; |•))(。*?)</ p> /

如果不是,則必須找到相應的ASCII表示形式(十六進制或八進制),並將其放在regex.<br>

一旦到此為止,XML解析器將快速完成其中的重新排序部分。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM