这是 xml 代码,我将此文本加载为字符串,我需要将其所有嵌套标签和内容替换为 htmlentities..
<?xml version="1.0" encoding="utf-8"?>
<data>
<target><x id="25e02e3e839c-a1e6b03cb682" pid="NLSheets" name="NLSheets" />Sheets"</target>
<target>"<x id="3510a371bdf8-861b965564ea" pid="NLTable" name="NLTable" />Table"</target>
<target>"<x id="48a1560eaa68-c400c8394f0a" pid="NLCaption" name="NLCaption" />Caption"</target>
</data>
我为该任务使用了以下 php 代码。
function html_entities($matches) {
return str_replace($matches[1], htmlentities($matches[1]), $matches[0]);
}
function get_tag( $tagname, $xml ) {
$pattern = "/<$tagname ?.*>(.*?)<\/$tagname>/";
$content = preg_replace_callback($pattern, html_entities, $xml);
return $content;
}
$content = get_tag('target', $str);
echo $content;
现在问题出在正则表达式上。我使用了正则表达式
正如您在 get_tag 函数中看到的那样。$pattern = "/<$tagname ?.*>(.*?)<\/$tagname>/";
这将建立在运行时
/<target ?.*>(.*?)<\/target>
现在我无法解决问题...嵌套标签值未转换为 htmlentities。
请帮忙