0

私はphp v5.3を使用しています。文字列を有効な xml に変換したいと思います。Xmlには明らかに「&」文字をエンコードする必要&がありますが、これを行うことができるすべての関数は、「ë」などの文字をxmlエンティティxmlが受け入れない(ëこの場合)に変換します。どの機能を使用すればよいですか?

4

4 に答える 4

4

htmlspecialchars必要なものです。とは異なりhtmlentities、変換するものよりもはるかに選択的です。

htmlentities ドキュメントから:

この関数は、htmlentities() を除いてすべての点で htmlspecialchars() と同じです。HTML 文字エンティティに相当するすべての文字がこれらのエンティティに変換されます。

<?php
$a = "I love things & stuffë";
$b = htmlspecialchars($a);
$c = htmlentities($a);
echo "$b\n$c\n";

出力:

I love things &amp; stuffë
I love things &amp; stuff&Atilde;&laquo;

http://www.php.net/manual/en/function.htmlspecialchars.php

于 2013-03-15T16:17:03.240 に答える
2

XML を作成する場合は、DOMDocumentすでに手元にある可能性があります。そうでない場合でも、簡単に作成できます。を使用するDOMDocumentと、XML に対して 100% 整形式のテキストを作成できます。

$text = "I'm using php v5.3. I would like to convert a string to valid xml. Xml apparently requires '&' characters to be encoded to &amp; but all functions I can find which do this also convert characters like 'ë' to html entities xml doesn't accept (&euml; in this case). What function should I use?";

$doc = new DOMDocument();
echo $doc->saveXML($doc->createTextNode($text));

これにより、次の出力が得られます(逐語的):

I'm using php v5.3. I would like to convert a string to valid xml. Xml apparently requires '&amp;' characters to be encoded to &amp;amp; but all functions I can find which do this also convert characters like 'ë' to html entities xml doesn't accept (&amp;euml; in this case). What function should I use?

于 2013-03-15T16:59:06.123 に答える
0
$str = preg_replace('/\s&\s/', '&amp', $str);

これにより、末尾と末尾の空白で囲まれたすべての「&」が置き換えられます。必要に応じてパターンを少し調整するだけです

于 2013-03-15T16:11:41.703 に答える
0

& のみに変換したい場合は、&amp;これを試すことができます:

$encoded_str = str_replace('&','&amp;',$original_str);

&amp;amp;元々持っていた場合のようなものを避けるために、それを防ぐ1つの方法は、最初&amp;にすべてを変換することです&amp;

$encoded_str = str_replace('&','&amp;',str_replace('&amp;','&',$original_str));
于 2013-03-15T16:15:41.857 に答える