1

我在互联网上找到了这个功能,但由于某种原因它似乎不起作用

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;

?>

尽管过去它曾与我一起工作,但由于某种原因它似乎不起作用,有人知道可能出了什么问题吗?

4

3 回答 3

1

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

<?php

include('getbetween.php');
$str = getbetween(file_get_contents('test.html'),'<test>','</test>');
echo $str;
于 2013-04-30T17:26:58.223 回答
1

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

于 2013-04-30T17:24:18.443 回答
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];
}
于 2013-04-30T17:23:36.133 回答