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>