我正在尝试从字符串中删除以下模式:
<div class="main_title">Content 1</div>
其中'内容1'可能因字符串而异。
以下似乎不起作用:
$output = preg_replace('<div class="main_title">.*</div>', " ", $output);
我错过了一些明显的东西吗?
答案 0 :(得分:3)
DOM方法可能更优越,因为您不必担心区分大小写,空格等。
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//div[@class="main_title"]') as $node) {
$node->parentNode->removeChild($node);
}
$output = $dom->saveHTML();
可以使用正则表达式,特别是如果您可以相信您的输入将遵循非常特定的格式(没有额外的空格,也许没有大小写差异等)。您的主要问题是缺少PCRE分隔符
$output = preg_replace('@<div class="main_title">.*?</div>@', '', $output);
答案 1 :(得分:1)
正如其他人在评论中所说,不要使用正则表达式来解析HTML,而是使用SimpleXML或DOMDocument。如果您还需要正则表达式,则需要在代码中添加模式分隔符:
$output = preg_replace('#<div class="main_title">.*</div>#', " ", $output);