2012-04-04 5 views
0

먼저 XML 파일에서 문자열을 가져옵니다.str_replace 관련 문제

내가 대체하려고 특수 문자있다 : '£'

을 내가 지금처럼 않는 str_replace를 사용하는 경우는 일단

string(138) "Argothian Pixies can't be blocked by artifact creatures.�Prevent all damage that would be dealt to Argothian Pixies by artifact creatures." 

:

$ability1 = str_replace("£", "", $ability); 

이 쇼를 위해서 var_dump 것입니다 $ ability1이 전달되고 wordpress가 그것을 post에 삽입합니다. 이것이 결과입니다.

Argothian Pixies can’t be blocked by artifact creatures. 

문자 다음의 모든 것을 삭제합니다.

"이 (가)"라고 생각되는 경우 왜 £을 (으)로 변경해야합니까? 내가 무엇을 놓쳤는 지 잘 모르겠다.

답변

1

아마 당신의 문자열은 UTF-8입니다 (ANSI에서 코드입니다 가정) utf_decode은() 코드에서 올바르게 처리하는 등의 기능을 확인해야합니다? PHP. 다음과 같이해야합니다.

$ability1 = utf8_decode($ability); 
$ability1 = preg_replace("/[£ ]/","", $ability1); 
$ability1 = utf8_encode($ability1); 
+1

예. 나는 그것에 대해 전에 읽었지만 내 마음이 미끄러웠다. preg_replace는 모든 것을 지우고 특수 문자 만 남겨 두었습니다. 사용하여 종료 : $ ability1 = utf8_decode ($ 능력); $ ability1 = str_replace ("£", "", $ ability1); $ ability1 = utf8_encode ($ ability1); –

+0

죄송합니다. 표현식에 "not"(^)가있었습니다. – fragmentedreality

+0

** 사용법 경고 : **이 코드는 데이터 손실을 가져옵니다. – hakre

2

문자열이 올바른 인코딩을 사용하고 있는지 확인하고 UTF8에 encoding 또는 decoding을 시도한 다음 str_replace를 적용한다.

1

XML 파일은 어떻게 인코딩됩니까? 나는 그것이 UTF-8일지도 모른다라고 생각한다. 이 경우에 당신은