Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 除了一些html标记外,我如何剥离它们?_Php_Regex_String_Html - Fatal编程技术网

Php 除了一些html标记外,我如何剥离它们?

Php 除了一些html标记外,我如何剥离它们?,php,regex,string,html,Php,Regex,String,Html,我需要从php字符串中删除所有html代码,除了: <p> <em> <small> 你知道,strip_tags()函数很好,但它会剥离所有html标记,我怎么能告诉它删除所有html,除了上面的标记 您应该查阅手册: 语法:带标签(您的字符串,允许的标签) 如果传递第二个参数,这些标记将不会被剥离 strip_tags($string, '<p><em><small>'); strip_标签($string,)

我需要从php字符串中删除所有html代码,除了:

<p>
<em>
<small>

你知道,strip_tags()函数很好,但它会剥离所有html标记,我怎么能告诉它删除所有html,除了上面的标记

您应该查阅手册:

语法:带标签(您的字符串,允许的标签)

如果传递第二个参数,这些标记将不会被剥离

strip_tags($string, '<p><em><small>'); 
strip_标签($string,);

根据您的评论,您希望仅在HTML元素具有某些类或属性时删除它们。您需要建立一个DOM,然后:

<?php

$data = <<<DATA
<div>
    <p>These line shall stay</p>
    <p class="myclass">Remove this one</p>
    <p><a href="#somewhere">I will be deleted as well</a></p>
    <p>But keep this</p>
</div>
DATA;

$dom = new DOMDOcument();
$dom->loadHTML($data, LIBXML_HTML_NOIMPLIED); 

$xpath = new DOMXPath($dom);

$elements_to_be_removed = $xpath->query("//*[count(@*)>0]");
foreach ($elements_to_be_removed as $element) {
    $element->parentNode->removeChild($element);
}

// just to check
echo $dom->saveHTML();
?>
query(“/*[count(@*)>0]”;
foreach($elements\u to\u be\u作为$element删除){
$element->parentNode->removeChild($element);
}
//只是检查一下
echo$dom->saveHTML();
?>

要更改要删除的元素,您需要更改查询,即要使用类
myclass
删除所有元素,它必须为
“/*[class='myclass']”

这很好,谢谢您,upvote。我只想删除具有如下属性的标记

test

@MartinAJ:您需要建立一个DOM,然后编辑原始问题以反映您的所有要求。@Jan OP需要在问题本身中包含此类信息。注释只是暂时的。好吧,有一件事,你的方法只适用于类属性,你能为所有属性开发你的方法吗?@MartinAJ:也许你最好阅读一下xpath。当然我可以在这里为你做这件事,但是a)你需要转移一些荣誉,b)那么你的快乐在哪里?看起来你喜欢你的工作(编程)。。!好的,有一件事,为什么会有一些新的标签?我的意思是
对你很好,谢谢你的答案。但是仍然有
标记。。看,我所要做的就是从字符串中剥离具有class(或其他)属性的html标记(因为我想让我的网站UI不受用户输入的内容的影响)。。所以我需要得到纯形式的字符串。。有可能吗?哦。。我发现了一件很棒的事。。我猜你想编辑你的答案,使之完美
:-)