2017-02-15 2 views
0

HTML 문자열에서 모든 링크 텍스트와 href를 추출하려고하는데 원본 문자열이 유니 코드이고 nodeValue가이 문제를 해결하지 못했습니다?PHP : 유니 코드 nodeValue?

$links = array(); 
$titles = array(); 

$dom = new DOMDocument(); 
$dom->loadHTML($str); 
$hrefs = $dom->getElementsByTagName("a"); 
foreach ($hrefs as $href) { 
    $links[] = $href->getAttribute("href"); 
    $titles[] = $href->nodeValue; 
} 

내 소스 문자열은 다음과 같습니다 : 나는 nodeValue를 유니 코드 문자를 존중 할 수있는 방법

Türkiye 

을 :

<p><a href='uploads/root/tr_62.pdf'>Türkiye</a></p> 

그러나 $ 내 출력 제목이 [0]과 같다 ?

감사합니다. 당신이 많은

$dom = new DOMDocument(); 
$html_data = mb_convert_encoding($str , 'HTML-ENTITIES', 'UTF-8'); 
$dom->loadHTML($html_data ); 
$hrefs = $dom->getElementsByTagName("a"); 
foreach ($hrefs as $href) { 
    $links[] = $href->getAttribute("href"); 
    $titles[] = $href->nodeValue; 
} 
+0

추가'헤더 ("콘텐츠 유형 : 텍스트/html로; 문자셋 = UTF-8"); '당신의 스크립트 (첫번째 출력 전) 문제가 해결 되었습니까? 캐릭터 세트, –

+0

나는 페이지에 등 –

+0

DOMDocument와 모든 XML 함수는 기본적으로 UTF-8로 기본 설정되어 있으므로 유니 코드를 잘 처리 할 수 ​​있습니다. 출력 결과에서 유니 코드가 아닌 유니 코드 인코딩을 사용하거나 인코딩을 선언하지 못한 앱이 있습니다 (''태그는 대부분 관련성이 없으며 HTTP 헤더와 물론 실제 콘텐츠가 포함됩니다). /// PHP 코드를 지금 둡니다. 정적'자동차 '를 복사하여 붙여 넣으면 올바르게 인쇄됩니까? –

답변

1

는 사용자 Veve의 코멘트는 내 질문에 대답했다.

은 다음 줄이 내 문제를 해결 :

$str = mb_convert_encoding($str, 'html-entities', 'utf-8'); 
+0

이것은 UTF-8 지원 앱에서 꼭 필요한 해결 방법입니다. 단지 기본 인코딩 구성 오류를 숨 깁니다. –

0

감사를 mb_convert_encoding 사용

+0

이것은 Daniel의 카피 응답이며 문제를 "해결"하지 않으며 모든 것을 7 비트 US-ASCII로 변환하여 숨 깁니다. –

+0

엄격히 말하면, 그것은 Daniel과 내가 다시 게시 한 Veve의 코멘트에 링크되어있는 대답의 사본입니다. 내가 대니얼스가 나의 것을 제출할 때까지 나는 대답을 보지 못했다. –

+0

충분합니다. 어쨌든 정확한 질문으로 질문을 마감한다는 생각은 어디서나 동일한 정보가 퍼져 나가는 것은 아닙니다 (방금 발생한 것처럼). 어쨌든, 나는 그 질문이 실제로 동일하다고 생각하지 않는다. 나는 당신이 애플 리케이션이 UTF-8을 지원하지 않을 수도 있다고 생각한다. –