我想用php删除<h1>
xxx yyyy zzz </h1>
。但是,首先,我想控制字符串是以<h1>
开头还是以</h1>
这个追求有功能吗?
if(string begins with '<h1>' and ends with '</h1>'){
replace `<h1>`xxx yyyy zzz `</h1>` to 'NULL or empty space'
}
答案 0 :(得分:4)
使用正则表达式怎么样?
$string = preg_replace( "/<h1>(.*?)<\\/h1>/", "", $string );
*?
是非贪婪的
答案 1 :(得分:2)
正则表达式不适合这项工作。使用DOM解析器来解析HTML。这是使用内置DOMDocument
类的解决方案。
$dom = new DOMDocument;
$your_html_string = '<h1>xxx yyyy zzz </h1>';
$dom->loadHTML($your_html_string);
$h1_tags = $dom->getElementsByTagname('h1');
// array of elements that are to be removed
$remove = array();
foreach ($h1_tags as $tag) {
$remove[] = $tag;
}
// remove them
foreach($h1_tags as $tag) {
$tag->parentNode->removeChild($tag);
}
// remove the DOCTYPE/html/body tags that DOM adds by default
$html = preg_replace(
'~<(?:!DOCTYPE|/?(?:html|head|body))[^>]*>\s*~i', '', $dom->saveHTML()
);
echo $html;
答案 2 :(得分:0)
<?php
$string = '<h1>AbcXycKasOkasdMpal</h1>';
$pattern = '/<h1>.*<\/h1>/i';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);
?>
通过使用正则表达式和PHP preg_replace
函数,您可以精确定位并替换以<h1>
开头并以空格字符串结束</h1>
的每个字符串。
如果您不想替换,请查看preg_match
。
编辑:已更改为修复@SyntaxLAMP指出的内容。