2013-04-10 59 views
0

我有這等頁面test.php我有這樣的PHP代碼運行在此頁test1.php文本提取PHP

<?php 
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument(); 
    $doc->loadHTMLFile("http://inviatapenet.gethost.ro/sop/test1.php"); 
    $xpath = new DOMXpath($doc); 
    $elements = $xpath->query("//*[@type='text/javascript']/@fid"); 
     if (!is_null($elements)) { 
      foreach ($elements as $element) { 
       $nodes = $element->childNodes; 
       foreach ($nodes as $node) { 
        echo $node->nodeValue. "\n"; 
       } 
      } 
     } 
?> 

但說明不了什麼。

我試圖從該頁面,只有FID = 「x8qfp3cvzbxng8e」 的內容來獲得:

從這條線

<script type="text/javascript"> fid="x8qfp3cvzbxng8e"; v_width=640; 
v_height=360; </script> 

輸出應和:

x8qfp3cvzbxng8e

Wath我必須做什麼?

+0

不要以爲/ @ fid會工作 – njzk2 2013-04-10 13:01:17

+0

這不行! – 2013-04-10 13:47:46

回答

0

,如果你只想要fid內容使用正則表達式

preg_match_all('~fid="(.*?)"~si',$Text,$Match); 
print_r($Match); 

輸出爲您的樣品

Array 
(
    [0] => Array 
    (
     [0] => fid="x8qfp3cvzbxng8e" 
    ) 

    [1] => Array 
    (
     [0] => x8qfp3cvzbxng8e 
    ) 

) 

嘗試一下本作中提取文本此沒有顯示出任何script內容,但如果你想要可以刪除的條件這

function extractText($node) { 
    if($node==NULL)return false;  
    if (XML_TEXT_NODE === $node->nodeType || XML_CDATA_SECTION_NODE === $node->nodeType) { 
     return $node->nodeValue; 
    } else if (XML_ELEMENT_NODE === $node->nodeType || XML_DOCUMENT_NODE === $node->nodeType || XML_DOCUMENT_FRAG_NODE === $node->nodeType) { 
     if ('script' === $node->nodeName) return ''; 

     $text = ''; 
     foreach($node->childNodes as $childNode) { 
      $text .= extractText($childNode); 
     } 
     return $text; 
    } 
} 

樣品

$Text=file_get_contents("http://inviatapenet.gethost.ro/sop/test1.php"); 
preg_match_all('~fid="(.*?)"~si',$Text,$Match); 
$fid=$Match[1][1]; 
echo $fid; 
+0

我是諾貝我需要完整的代碼,我不知道如何使用它。 – 2013-04-10 13:30:50

+0

我把這個代碼,但它給了我這個新的「%VAR_PLACE%」 – 2013-04-10 13:47:22

+0

我現在編輯測試 – 2013-04-10 13:47:53