我在互联网上发现了这个功能,但由于某些原因它似乎没有工作
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;
?>
虽然过去曾与我合作过,但似乎并没有起作用,有没有人知道会出现什么问题?
答案 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];
}