繁体   English   中英

我如何用正则表达式形成这种替换

[英]How do i form this replacement with regular expression

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

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

但是我无法使其正常工作。

更新:

我需要删除一个div及其中的所有内容,该div包含一个事件名称和日期,但是我只能根据事件名称删除div,因此实际上需要将日期定义为任何字符串。

假设您有一个<div>并且在其中有一个文本节点,您可以使用$myVariable定义一个特定的单词。

任务是:

  1. 阅读以下文件
  2. 初始化DOM
  3. 使用包含$myVariable文本的.nodeValue收集<div>标签
  4. 从DOM中删除这些标签
  5. 返回更新的DOM

该算法的代码如下(DOM在演示中使用HTML字符串初始化):

$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

IDEONE演示

请注意,您可以使用以下内容来强制DOMDocument省略添加!DOCTYPE来声明和初始化DOM:

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM