如何使用此<p><span class="headline">
替换此<p class="headline"><span>
最简单的PHP。
$data = file_get_contents("http://www.ihr-apotheker.de/cs1.html");
$clean1 = strstr($data, '<p>');
$str = preg_replace('#(<a.*>).*?(</a>)#', '$1$2', $clean1);
$ausgabe = strip_tags($str, '<p>');
echo $ausgabe;
在我从网站更改html之前,我希望从范围获取类声明到<p>
标记。
答案 0 :(得分:3)
不要用正则表达式解析html! 这个课程应该提供你所需要的 http://simplehtmldom.sourceforge.net/
答案 1 :(得分:1)
如果您无法保证格式,则不使用正则表达式解析HTML的原因是。如果您已经知道字符串的格式,则不必担心有完整的解析器。
在您的情况下,如果您知道格式,则可以使用str_replace
str_replace('<p><span class="headline">', '<p class="headline"><span>', $data);
答案 2 :(得分:1)
嗯,答案已被接受,但无论如何,这里是如何使用原生DOM:
$dom = new DOMDocument;
$dom->loadHTMLFile("http://www.ihr-apotheker.de/cs1.html");
$xPath = new DOMXpath($dom);
// remove links but keep link text
foreach($xPath->query('//a') as $link) {
$link->parentNode->replaceChild(
$dom->createTextNode($link->nodeValue), $link);
}
// switch classes
foreach($xPath->query('//p/span[@class="headline"]') as $node) {
$node->removeAttribute('class');
$node->parentNode->setAttribute('class', 'headline');
}
echo $dom->saveHTML();
在旁注中,HTML包含标题元素,因此为什么不使用<h*>
元素而不是使用语义上多余的“标题”类。
答案 3 :(得分:0)
您是否尝试过使用str_replace
?
如果<p>
和<span>
代码的展示位置一致,您可以使用
str_replace("replacement", "part to replace", $string);