2013-04-30 104 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