私のページにXML RSSを作成しています。そして、このエラーに実行している:私はXMLで& ...私は私の最後のフィールド行で行う...&をPHPでXMLに変換する
すべての私をきれいにするための最良の方法は何を持っているカントので
error on line 39 at column 46: xmlParseEntityRef: no name
は、どうやらこれがありますPHPで$row['field']'s
&年代は&
私のページにXML RSSを作成しています。そして、このエラーに実行している:私はXMLで& ...私は私の最後のフィールド行で行う...&をPHPでXMLに変換する
すべての私をきれいにするための最良の方法は何を持っているカントので
error on line 39 at column 46: xmlParseEntityRef: no name
は、どうやらこれがありますPHPで$row['field']'s
&年代は&
使用htmlspecialchars
と呼ばれていますe HTML特殊文字&
,<
,>
,"
および任意に'
(第2パラメータ$quote_style
を参照)。
に変わるように、ちょうど目をエンコードするためにhtmlentities()とhtml_entity_decode()
使用
html_entity_decode($row['field']);
これは、あなたが&npsb;を持っている場合、それは空間にそれを変更しますまた&から取ると&に戻すだろう。
http://us.php.net/html_entity_decode
乾杯
なぜ私は元に戻す必要があるのか分かりません...これはRSS用ですフィード。 – ian
は本当にPHPでのDOM XML関数になっているはずです。把握する作業が少しありますが、このような問題は避けてください。エンティティへ
どうしてですか?私に何かを指さし、私はそれを理解するでしょう。 – ian
変換予約XML文字が
function xml_convert($str, $protect_all = FALSE)
{
$temp = '__TEMP_AMPERSANDS__';
// Replace entities to temporary markers so that
// ampersands won't get messed up
$str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
if ($protect_all === TRUE)
{
$str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
}
$str = str_replace(array("&","<",">","\"", "'", "-"),
array("&", "<", ">", """, "'", "-"),
$str);
// Decode the temp markers back to entities
$str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
if ($protect_all === TRUE)
{
$str = preg_replace("/$temp(\w+);/","&\\1;", $str);
}
return $str;
}
XMLはHTMLと同じ* *名前のエンティティのすべてを共有しない - だけで5定義済みエンティティ(アンペア、LT、GT、QUOT、およびAPOS)を有します。 htmlentities()を使用すると、XML文書に添付されたDTDがすべてHTML名前付きエンティティを含む場合を除き、変換によってXMLパーサーがサポートする必要のないエンティティに変換される可能性があります。 –
それでは、それでは何がベストですか? – ian
@ian:Gumboの 'htmlspecialcharacters()'の記述があると、XMLにあらかじめ定義されたエンティティを持つ5文字にしか触れないので、それに行きます。 –