如何使用正则表达式形成此替换

时间:2015-09-21 19:27:17

标签: php html regex

我需要使用php删除特定字符串,字符串需要以<div class='event'>开头,后跟任何可能的字符串,但其中包含$myVariable,然后是</div>。如何使用preg_replace()删除所有这些内容?我已经解决了它可能是这样的

preg_replace("<div class='event'>(.*)" . $myVariable . "(.*)</div>", "", $content);

但我无法让它发挥作用。

更新

我需要删除div及其中的所有内容,div包含事件名称和日期,但我只能根据事件名称删除div,因此日期需要定义为几乎任何字符串

1 个答案:

答案 0 :(得分:1)

我们假设您有一个$myVariable,其中有一些文字节点,其中包含您使用<div>定义的特定字词。

任务是:

  1. 阅读
  2. 中的文件
  3. 初始化DOM
  4. 使用包含.nodeValue文字
  5. $myVariable收集$html = "<<YOUR_HTML_STRING>>" $dom = new DOMDocument; // Declaring the DOM $dom->loadHTML($html); // Initializing the DOM with an HTML string $myVariable = "2015-09-12"; // Your dynamic variable $xpath = new DOMXPath($dom); // Initializing the DOMXpath $divs = $xpath->query("//div[contains(.,'$myVariable')]"); // Collecting DIVs // having $myVariable foreach($divs as $div) { $div->parentNode->removeChild($div); // Removing the DIVs } echo $dom->saveHTML(); // Getting the updated DOM 代码
  6. 从DOM中删除这些标记
  7. 返回更新的DOM
  8. 该算法的代码如下(在演示中使用HTML字符串初始化DOM):

    !DOCTYPE

    请参阅IDEONE demo

    请注意,您可以强制DOMDocument使用以下内容省略添加$dom = new DOMDocument('1.0', 'UTF-8'); $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 以声明和初始化DOM:

    {"code":107,"error":"Invalid JSON: m01011205"}