getbetween功能不起作用?

时间:2013-04-30 17:18:17

标签: php function

我在互联网上发现了这个功能,但由于某些原因它似乎没有工作

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>

这是我尝试用它来获取值hello的php页面

<?php

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

?>

虽然过去曾与我合作过,但似乎并没有起作用,有没有人知道会出现什么问题?

3 个答案:

答案 0 :(得分:1)

您正试图从<test>中找到</test>"test.html"字符串,而不是文件。将文件的内容放在那里或使用file_get_contents("test.html")

答案 1 :(得分:1)

您正在将字符串传递给函数,而不是文件的实际内容。试试这个传递实际的html。

<?php

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

答案 2 :(得分: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];
}