Php 如何从XML文件中删除元素及其内容
下面是我需要从中删除Php 如何从XML文件中删除元素及其内容,php,html,regex,xml,Php,Html,Regex,Xml,下面是我需要从中删除标记及其内容的文本 <w:document> <w:t>some text here</w:t> <w:drawing>drawing image</w:drawing> </w:document> 这里有一些文字 绘图图像 我试过这个 $result = preg_replace('/<w:drawing\b[^>]*>(.*?)<\/w:drawing>/i', '
标记及其内容的文本
<w:document>
<w:t>some text here</w:t>
<w:drawing>drawing image</w:drawing>
</w:document>
这里有一些文字
绘图图像
我试过这个
$result = preg_replace('/<w:drawing\b[^>]*>(.*?)<\/w:drawing>/i', '', $xml);
$result=preg_replace('/]*>(.*?)/i',''.$xml);
但是仍然有
标签,有什么建议吗
结果我想要得到
<w:document>
<w:t>some text here</w:t>
</w:document>
这里有一些文字
您只需将regex模式替换为以下内容
$result = preg_replace('/<w:drawing>.*<\/w:drawing>/', '', $xml);
$result=preg_replace('/.*/',''$xml);
这里的内容不是一个完整的XML文档,所以我对它做了一些更改。无论如何,永远不要尝试用正则表达式解析XML<永远不要强>
下面是一个使用的快速示例,但也同样适用:
$xml = <<< XML
<?xml version="1.0" encoding="UTF-8"?>
<w:document xmlns:w="w">
<w:t>some text here</w:t>
<w:drawing>drawing image</w:drawing>
</w:document>
XML;
$doc = new SimpleXMLElement($xml, 0, false, "w");
$doc->registerXPathNamespace("w", "w");
$drawings = $doc->xpath("//w:drawing");
foreach ($drawings as &$drawing) {
unset($drawing[0]);
}
$new_xml = $doc->asXML();
echo $new_xml;
$xml=您从$result
中得到了什么?在结果中,我想得到一些文本,这里是一个字符串$xml
?你的代码对我来说是有效的(除了换行符)是的,它是一个字符串,我已经重新检查了我的代码并工作了..这很好。你应该结束你的问题,因为它是有效的。
<?xml version="1.0" encoding="UTF-8"?>
<w:document xmlns:w="w">
<w:t>some text here</w:t>
</w:document>