xmlファイルに追加する前に、$XML_COMMENTの€記号を「euros」に置き換えたいと思います。
€記号がutf-8文字ではなく、simplexmlからエラーメッセージが表示されます
Warning: SimpleXMLElement::addAttribute(): string is not in UTF-8 in ...
Warning: SimpleXMLElement::asXML(): output conversion failed due to conv error, bytes 0x82 0x26 0x61 0x6D in ....
ユーロ記号は、MySQL(utf-8)データベースに「€」として表示されます
ただし、Webページのテキストエリアには正しく表示されます。
これらの異なるstr_replaceを使用してみました
$XML_COMMENT=str_replace('€','euros',$XML_COMMENT)
$XML_COMMENT=str_replace('€','euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(128),'euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(0xE2).chr(0×82).chr(0xAC),'euros',$XML_COMMENT)
$XML_COMMENT=str_replace(chr(0x82).chr(0x26).chr(0x61).chr(0x6D),'euros',$XML_COMMENT)
成功せず
参考:私はどこでもutf-8を使用しています(MySQL、Webページ、XML)
これが私のコードです
// ? : $XML_COMMENT= "bla bla bla € bla bla bla";
// ? : $XML_COMMENT= "bla bla bla € bla bla bla";
// expected : $XML_COMMENT= "bla bla bla euros bla bla bla";
$ProductLog_XML = simplexml_load_file($file);
$ProductUpdate = $ProductLog_XML->order->product->addChild('update');
$ProductUpdate->addAttribute('comment',$XML_COMMENT);
$fp=fopen(file, "w");
fwrite($fp, $ProductLog_XML->asXML());
fclose($fp);
regex / preg_replaceを使用する代替手段はありますか?