简单地说,假设您有以下xml结构:
<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>
在PHP中使用strip_tags()提取该节点的文本时,我没有得到标签的内容。
第一步:
我想做的是提取并因此具有以下字符串:
"好吧,正如你所看到的,我需要一些帮助。"
第二步:
我还想将<CUSTOMTAG>
和</CUSTOMTAG>
转换为其他内容,例如<e>
和</e>
,最后得到以下字符串:
"Well, I need some help as you <e>can</e> see."
我希望只有经过测试和工作的代码。
提前感谢!
亲切问候
对于第二部分,您可以使用类似的东西:
<?php
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see, <CUSTOMTAG>maybe</CUSTOMTAG>.</TEXT>";
//1st part:
$dom = new DOMDocument();
$dom->loadXML($xml);
$xPath = new DOMXPath($dom);
foreach ($xPath->query('//TEXT') as $textNode) {
echo $textNode->textContent;
}
// 2nd part:
foreach ($xPath->query('//TEXT/CUSTOMTAG') as $find) {
$find_value = $find->nodeValue;
$replace = $dom->createDocumentFragment();
$replace->appendXML('<e>'.$find_value.'</e>');
$find->parentNode->insertBefore($replace, $find);
$parentnode = $find->parentNode;
$parentnode->removeChild($find);
}
$result = $dom->saveHTML();
echo $result;
?>
对于第一步,只需使用以下代码:
<?php
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>";
$domDoc = new DOMDocument();
$domDoc->loadXML($xml);
$domXPath = new DOMXPath($domDoc);
$textNodes = $domXPath->query('//TEXT');
foreach ($textNodes as $textNode) {
echo $textNode->textContent;
}
第二步,看看这个答案https://stackoverflow.com/a/8164058/2000503.