2015-11-28 4 views
2

моя проблема заключается в том, что я не могу захватить текст в этом теге:PHP Simple HTML DOM - Получить текст внутри редкий тег

<p class="name"> 
    "      Eau de Toillete for Men, Spray 110ml  "  </p> 

Как вы можете видеть, текст в кавычках

" Eua из туалета для мужчин, 110мл Спрей "

Это мой код:

$pos1 = ".h2marca"; 
$pos2 = "[id=landing-submarca-perfume] h1"; 
$pos3 = "[class=name]"; 
$pos4 =".price"; 
$contador = 0 


while (!empty($titulo3 = trim($html2->find($pos3,$contador)->plaintext))) 
    { 
     $titulo1 = trim($html2->find($pos1,0)->plaintext); 

     $titulo2 = trim($html2->find($pos2,0)->plaintext); 

     $titulo3 = trim($html2->find($pos3,$contador)->plaintext); 
     $titulo3 = str_replace("for Women, ","",$titulo3); 
     $titulo3 = str_replace("for Men, ","",$titulo3); 

     $titulo= $titulo1 . " " . $titulo2 . " " . str_replace("."," ",$titulo3); 
     $precio = trim($html2->find($pos4,$contador)->innertext); 

    $contador++; 
    } 

Мне нужно использовать «$ contador», потому что в этом веб-сайте есть и другие, и нужно захватить все.

$ título3 захватить пустое место.

мне нужно, чтобы захватить текст без удаления $ Контадор переменной

Можете ли вы мне помочь? это пример web http://www.fundgrube.es/es/perfumes/aramis/aramis.html

Спасибо !.

ответ

2

Немного вокруг домов, но это может работать:

$split_this = '<p class="name"> 
     "      Eau de Toillete for Men, Spray 110ml  "  </p>'; 

    $split_this = strip_tags($split_this, ''); 
    $split_this = str_replace('"','',$split_this); 
    $split_this = trim($split_this); 
    $split_this = '"' . $split_this . '"'; 

Дайте <p id="ptag1"> тег идентификатор и поместить скрытый вход

<input type="hidden" name="ptag_value" /> 

с JavaScript вы можете установить

document.getElementById('ptag_value').value = document.getElementById('ptag1').innerHTML; 

Если их сервер поддерживает fopen

$handle = fopen("http://www.fundgrube.es/es/perfumes/aramis/aramis.html", "r"); 
    $contents = stream_get_contents($handle); 
    $explode('<p class="name">', $contents); // may not work 
    echo $contents[0]; // 1, 2, 3 , 4, etc 

или

 strip_tags($contents, '<p>'); // should preserve the p tags 

в противном случае используйте пробел ''

 strip_tags($contents, ''); // not entirely predictable but can work 

Если просто оставить весь текст без HTML. Другие примеры:

https://stackoverflow.com/questions/15281124/php-split-explode-stringstrong text

+0

спасибо !! Вы мне очень помогли! * Я использовал этот код: $ titulo3 = strip_tags (обрезать ($ html2-> find ($ pos3, $ contador) -> plaintext)); $ titulo3 = str_replace («"»,„“, $ titulo3); эхо $ titulo3"
"; основывая ваш первый код – Thane

+0

Рад он работал - я был в состоянии импортировать все комментарии от одного сайта к. боковая панель на другом сайте, как только это, и нарезать их все. Думаю, в теории вы должны запустить регулярное выражение или какую-то очистку на импортированном html, чтобы предотвратить инъекцию, но это может быть излишним! Рад, что это сработало. – Steve

+1

Не уходит пробел, который был внутри перевернутых запятых? - 'trim (str_replace ('"', "", $ titulo3)), 'должен избавиться от него. – Steve

1

Он отлично работает для меня:

require_once('simple_html_dom.php'); 

$html = <<<EOF 
<p class="name"> 
    "      Eau de Toillete for Men, Spray 110ml  "  </p> 
EOF; 

$dom = str_get_html($html); 

echo $dom->find('p.name', 0)->plaintext; 
#=>  "      Eau de Toillete for Men, Spray 110ml  "