2

xml タグ内の値を urlencode する方法を見つける必要がありますが、PHP を使用してタグをそのまま保持します。おそらく、要素内にタグのない開始タグと終了タグをチェックする正規表現を使用することは可能です。>または、データ内でどちらか一方がない場合との間でデータを探すほうがよい場合が</あります。

<?xml version="1.0"?>
<catalog>
   <book>
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications with XML.</description>
   </book>
   <book>
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description>
   </book>
</catalog>

次のようになる必要があります。

<?xml version="1.0"?>
    <catalog>
       <book>
          <author>Gambardella%2C+Matthew</author>
          <title>XML+Developer%27s+Guide</title>
          <genre>Computer</genre>
          <price>44.95</price>
          <publish_date>2000-10-01</publish_date>
          <description>An+in-depth+look+at+creating+applications+with+XML.</description>
       </book>
       <book>
          <author>Ralls%2C+Kim</author>
          <title>Midnight+Rain</title>
          <genre>Fantasy</genre>
          <price>5.95</price>
          <publish_date>2000-12-16</publish_date>
          <description>A+former+architect+battles+corporate+zombies%2C+an+evil+sorceress%2C+and+her+own+childhood+to+become+queen+of+the+world.</description>
       </book>
    </catalog>

編集 最後に、プロセスを変更して、この問題を解消しました。

私はおそらく他の人のためにトリックをするので、答えを受け入れました

4

1 に答える 1

3

これは、DOMDocument / DOMXPath で行うのはかなり簡単です。空でないすべてのテキスト ノードを照会し、それらを urlencoded テキストで更新するだけです。

$dom = new DOMDocument;
$dom->loadXML($xml);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//text()[normalize-space()]') as $textNode) {
    $textNode->parentNode->replaceChild($dom->createTextNode(
        urlencode($textNode->nodeValue)), $textNode);
}
echo $dom->saveXML();
于 2013-03-28T23:35:38.153 に答える