2015-11-28 70 views
2

我的問題是,我不能抓住這個標籤中的文字:PHP簡單的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">標籤的ID,並把一個隱藏的輸入

<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(trim($ 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  "  
相關問題