0

簡単に言えば、次の xml 構造があるとします。

<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>

PHP で strip_tags() を使用してこのノードのテキストを抽出すると、タグの内容が取得されません。

最初の一歩:

私がやりたいことは、次の文字列を抽出して取得することです。

「ええと、ご覧のとおり、助けが必要です。」

第二段階:

<CUSTOMTAG>また、 andをandの</CUSTOMTAG>ように別のものに変換したいと思います。最終的に次の文字列が得られます。<e></e>

"Well, I need some help as you <e>can</e> see."

テスト済みで動作するコードのみをいただければ幸いです。

前もって感謝します!

敬具

4

2 に答える 2

0

最初のステップでは、次のコードを使用します。

<?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;
}

2 番目のステップについては、この回答https://stackoverflow.com/a/8164058/2000503をご覧ください。

于 2013-06-29T18:59:46.387 に答える
0

2番目の部分では、次のようなものを使用できます。

<?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;
?>
于 2013-06-29T20:37:04.153 に答える