2013-04-30 103 views
1

我發現在互聯網上這個功能,它似乎並沒有工作因爲某種原因getbetween函數不工作?

function getbetween($content, $start, $end) 
{ 
    $r = explode($start, $content); 

    if (isset($r[1])) 
    { 
     $r = explode($end, $r[1]); 
     return $r[0]; 
    } 

    return ''; 
} 

,它似乎並沒有工作,我嘗試過了以下的html文件

<test>Hello</test> 

,這是PHP頁面,我試圖用它來獲取值招呼

<?php 

include('getbetween.php'); 
$str = getbetween('test.html','<test>','</test>'); 
echo $str; 

?> 

它似乎並沒有被過去的工作,雖然由於某種原因它一直和我一樣,有沒有人有任何想法可能是錯的?

+0

你做了什麼調試?第一次爆炸後設置了什麼'$ r'?第二次爆炸後會發生什麼? – andrewsi 2013-04-30 17:20:24

+1

從您的示例中,您試圖僅將內容片段匹配在文件名上,而不是文件內容。 – mario 2013-04-30 17:21:33

+0

我從來沒有得到... – raidenace 2013-04-30 17:23:59

回答

1

您正在向函數傳遞一個字符串,而不是文件的實際內容。試試這個來傳遞實際的html。

<?php 

include('getbetween.php'); 
$str = getbetween(file_get_contents('test.html'),'<test>','</test>'); 
echo $str; 
0

它仍然可以工作,但是你似乎錯過了串

'test.html' 

不包含字符串的開始,也不是結束串。

它只是一個文件名。 PHP不擴展字符串,只包含裏面的文件名。所以你可能想爲自己寫一個函數;)不要只是開玩笑說那個函數已經存在了。舉例:

include('getbetween.php'); 

$file = 'test.html'; 

$buffer = file_get_contents($file); 
$between = getbetween($buffer, '<test>', '</test>'); 

echo $between; 

然後你的功能並不完全清楚。如果沒有找到起點,爲什麼不從頭開始?

function getbetween($content, $start, $end) 
{ 
    $r = explode($start, $content, 2); 

    if (isset($r[1])) 
    { 
     $r = explode($end, $r[1], 2); 
    } 

    return $r[0]; 
} 

否則返回早期:

function getbetween($content, $start, $end) 
{ 
    $r = explode($start, $content, 2); 

    if (!isset($r[1])) 
    { 
     return '';    
    } 

    $r = explode($end, $r[1], 2); 

    return $r[0]; 
} 
1

你正在努力尋找從"test.html"<test></test>字符串,而不是文件。將文件的內容放在那裏或使用file_get_contents("test.html")

+0

我試圖找到兩個標籤之間有什麼 – Ali 2013-04-30 17:26:04

+0

是的,它實際上只是文件名字符串問題。 – Pietu1998 2013-04-30 17:26:47