2013-08-03 6 views
0

특정 div의 내용을 페이지에서의 내용으로 가져와 db에 저장하려고합니다. 이 UTF-8 DOMDocument보다 더 처리하기 때문에 DOM에서 HTML을 가져와 MySql에 저장하십시오.

$html = file_get_contents($url); 
$dom = new SmartDOMDocument(); 
$dom->loadHTML($html);  
$div_tags = $dom->getElementsByTagName('div'); 
foreach ($div_tags as $element) { 
    if(strpos($element->getAttribute('itemprop'), 'description') !== false) 
     $description = $element->nodeValue; 
} 

내가 SmartDOMDocument를 사용 : 나는 다음과 같은했다.

이제 태그가이 아닌 text of the element이됩니다. 나는 this solution을 시도했고 그것은 나에게 태그가있는 텍스트를 주었다. 그러나, 그것을 내 DB에 저장하려고했을 때, 나는 할 수 없었다!

utf-8 text with the tags을 요소에서 가져 와서 db에 올바르게 저장하는 더 좋은 방법이 있습니까?

편집 : 삽입 문은 아주 간단합니다 :

$q = "INSERT INTO `MyTable`.`content` (`description`) VALUES ('$description')"; 
$r=mysql_query($q); 
var_dump($r); 
+1

'데이터베이스에 저장하려고했을 때, 그럴 수 없었다! '왜? 어떤 오류? 무슨 일이야? – Prix

+0

결과에'var_dump()'를 시도했는데'bool (false)'를주었습니다. 다른 건 없어. – iTurki

+0

코드를 잘 살펴보면 foreach를, if와 요소는 여러 항목을 잡거나 하나만 잡으려고합니까? 그럴 경우 아마 공허한 다른 요소를 치는 것처럼 아마 적을 떠나기 위해 휴식을 취하십시오. – Prix

답변

0

그것이 nodeValue를 이외의 다른 특성을 가지고 있는지 확인하기 위해 $ 요소를 -ing 위해서 var_dump을보십시오. HTML 값, getHTML 또는 기타 유사한 속성이 있어야합니다.

+0

나는 그것을 시험해 보았다. 그것은'object (DOMElement) # 8 (0) {}'을 반환했습니다. 이상한! – iTurki

0

nodeValue 대신 textContent를 사용하십시오. 그리고 이스케이프를 잊지 마라. (이 경우 mysql_real_escape_string을 사용한다고 가정한다.)

+0

분명히,'textContent'는'nodeValue'와 차이가 없습니다. 태그가 제거됩니다. – iTurki

관련 문제