0

xml 파일에 추가하기 전에 $ XML_COMMENT의 유로 기호를 "유로"로 바꾸고 싶습니다. PHP preg_replace "유로"로 로그인

은 € 기호 SimpleXML을에서 내가 할 UTF-8 문자 및 오류 메시지가없는

유로 기호 ', ¬'

로 MySQL을 (UTF-8) 데이터베이스에 나타납니다
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 .... 

하지만 웹 페이지의 텍스트 영역에 올바르게 표시됩니다. 여기에 내 코드

의 I는 UTF-8 사방 (MySQL은, 웹 페이지 및 XML)

을 사용하고 있습니다 :

나는 성공을 참고

없이 서로 다른 않는 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) 

을 사용하려

// ? : $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를 사용하는 다른 방법이 있습니까?

+3

나는 어디에서나 utf-8을 사용하고 있습니다. 대부분의 경우 편집기가 잘못 구성되어 있고 다른 인코딩을 사용합니다. – phihag

+0

나는 그것을 utf-8로 확인했다. utf-8 인코딩으로 작동한다. 내 charset을 지정한 메타 태그를 제거했을 때 제대로 작동했다. !!!!! ---- 이해할 수 없다 : 어떤 종류의 캐릭터가 될까? –

+0

@phihag 당신은 그것을 어떻게 말합니까? 나는 $ XML_COMMENT가 utf-8에서 왔기 때문에 편집자가 내 문제와 관련이 없다고 생각합니다. UTF-8 웹 페이지에서 제공되는 MySQL 테이블 – baptme

답변

3

htmlentities()을 사용하면 유로화를 포함한 모든 항목을 변환 할 수 있으므로 €처럼 표시 될 수 있습니다.

나는 다음과 같은 방법을 사용합니다 : htmlentities($XML_COMMENT, ENT_QUOTES | ENT_IGNORE, "UTF-8", true)을 : htmlentities($str, ENT_QUOTES|"ENT_HTML401", "UTF-8", true)

당신이 사용하도록 선택할 수 있습니다. 플래그 변경에 대한 자세한 설명은 아래 링크를 참조하십시오. OP @ baptme (요청 참조)의 요청에 따라

출처 : php.net reference 원래 HTML 페이지가 컬 - 보내고 PHP로는 " '¬로 뱉어 후 & 유로를 사용하여 UTF-8이고, 어디 동일한 문제와 나를 위해 다음과 같은 일을했다

+0

+1 – baptme

+0

기꺼이 도와 드리겠습니다. D –

+0

htmlentities ($ XML_COMMENT, ENT_QUOTES | ENT_IGNORE, "UTF-8", true)로 답변을 업데이트 할 수 있습니까 – baptme

4

"

$nodeValue = str_replace(chr(0xE2).chr(0x82).chr(0xAC), "", $nodeValue)