2012-02-22 5 views
0

У меня есть раздел кода HTML, как это:PHP Simple HTML DOM Parser вопрос

 <a> 
      <img scr=""/>some text here... 
     </a> 

     <a> 
      <img scr=""/>some text here... 
     </a> 

Мне нужно, чтобы получить какой-нибудь текст здесь ...

я пытался так: пусть говорят раздел выше в HTML DOM. $ HTML

foreach ($html->find('a') as $myText) 
{ 
     echo '-----PPPP---->>>>'.$myText->plaintext.'this is test<br/>'; 
} 

Но это печать текста и изображений both.I просто нужен текст

+0

Odd. '-> plaintext' должен только извлекать текстовые узлы из узла, с которым вы имеете дело. '-> innertext' будет возвращать дочерние узлы, а также текст. –

+1

Простой HTML DOM Parser имеет свои проблемы, возможно, это один из них. Вы можете перейти к лучшему парсеру, например ['DOMDocument'] (http://php.net/DOMDocument), а затем просто использовать выражение xpath для получения текста. – hakre

+1

scr = "" должно быть src = "" –

ответ

0

я не использовал Simple HTML DOM Parser, но вместо этого пошел с DomDocument:

$html = <<<HTML 
<a><img src=""/>some text here...</a> 
<a><img scr=""/>some text here...</a> 
HTML; 

$dom = new DomDocument(); 
$dom->loadHTML($html); 
$links = $dom->getElementsByTagName("a"); 
foreach ($links as $link) { 
    var_dump($link->textContent); 
} 

результаты:

string 'some text here...' (length=17) 
string 'some text here...' (length=17) 
0

Как насчет разделения его на две части и печати после тега изображения:

foreach ($html->find('a') as $myText) 
{ 
    $parts = explode("/>", $myText); 
    echo $parts[1]; 
} 
0

Я думаю, вы должны использовать DOMDocument в PHP.

Как это:

$dom = new DOMDocument(); 
$dom->load($htmlfile); 
$atags = $dom->getElementsByTagName('a'); 
foreach ($atags as $atag) { 
    echo $atag->textContent; 
} 
1
->find('a')->plaintext; 

должны делать это