2015-04-08 98 views
1

我在查找兩個字符串之間的字符串時遇到了很多麻煩。獲取兩個字符串之間的子串PHP - 讀取HTML

這是代碼我現在有

<? 
 

 
$html = file_get_contents('mywebsite'); 
 

 
$tags = explode('<',$html); 
 

 
foreach ($tags as $tag) 
 
{ 
 
    // skip scripts 
 
    if (strpos($tag,'script') !== FALSE) continue; 
 
    // get text 
 
    $text = strip_tags('<'.$tag); 
 
    // only if text present remember 
 
    if (trim($text) != '') $texts[] = $text; 
 
    
 
    \t //print_r($text); 
 
\t echo($text); 
 
\t 
 
\t 
 
} 
 

 

 
function get_string_between($string, $start, $end){ 
 
\t $string = " ".$string; 
 
\t $ini = strpos($string,$start); 
 
\t if ($ini == 0) return ""; 
 
\t $ini += strlen($start); 
 
\t $len = strpos($string,$end,$ini) - $ini; 
 
\t return substr($string,$ini,$len); 
 
} 
 

 
$fullstring = $text; 
 
$parsed = get_string_between($fullstring, "tag1", "tag2"); 
 

 
print_r($parsed); 
 

 
echo ($parsed); 
 

 
?>

我認爲這個問題會發生在這條線:

$fullstring = $text; 

我不能完全肯定,如果$文本有從上面的函數中剝離了HTML。當我運行這段代碼時,我得到了像我期望的剝離網頁,但是我設置的標籤之間沒有任何內容。

有沒有人知道爲什麼這可能會發生或我失蹤?

+0

什麼是你想怎麼辦? –

+0

我想返回兩個「標籤」之間的字符串。 – user3205214

+3

雖然我們可以幫助您解決原始問題,但您的代碼會提出問題:最終目標是什麼?有很多更好的工具可用於解析HTML,具體取決於你想要做什麼。 –

回答

0

我認爲它是因爲你正在將文本聲明爲循環內的局部變量。所以,當你將$ text分配給fullstring時它實際上是null。我不明白你正在嘗試做的,但做到這一點,看看它是否

$fullstring = "" 
foreach ($tags as $tag){ 
    #your code as usual 
    echo($text); 
    $fullstring = $fullstring.$text; 
} 

並刪除$fullstring = $text線。

+0

謝謝你解決我的問題!我會upvote你的答案但我沒有足夠的信譽ñ。我應該如何修改我的問題,如果我能夠編輯它,這將幫助更多的人尋找這個簡單的問題? – user3205214

+0

您可以通過勾選'正確'標記將我的答案標記爲正確答案。 –

+0

,您可以將標題編輯爲「for循環後指定字符串時獲取空字符串」。順便說一下,它的主觀性很強,所以想想你是如何在谷歌中搜索這個問題的,並且製作了一個這樣的標題。 –

0

您可以使用此:

function get_string_between($string, $start, $end){ 
    $string = ' ' . $string; 
    $ini = strpos($string, $start); 
    if ($ini == 0) return ''; 
    $ini += strlen($start); 
    $len = strpos($string, $end, $ini) - $ini; 
    return substr($string, $ini, $len); 
} 

$fullstring = 'this is my [tag]dog[/tag]'; 
$parsed = get_string_between($fullstring, '[tag]', '[/tag]'); 

echo $parsed; // (result = dog) 

Reference

相關問題