获取两个字符串之间的子串PHP - 读取HTML
我在查找两个字符串之间的字符串时遇到了很多麻烦。获取两个字符串之间的子串PHP - 读取HTML
这是代码我现在有
<?
$html = file_get_contents('mywebsite');
$tags = explode('<',$html);
foreach ($tags as $tag)
{
// skip scripts
if (strpos($tag,'script') !== FALSE) continue;
// get text
$text = strip_tags('<'.$tag);
// only if text present remember
if (trim($text) != '') $texts[] = $text;
\t //print_r($text);
\t echo($text);
\t
\t
}
function get_string_between($string, $start, $end){
\t $string = " ".$string;
\t $ini = strpos($string,$start);
\t if ($ini == 0) return "";
\t $ini += strlen($start);
\t $len = strpos($string,$end,$ini) - $ini;
\t return substr($string,$ini,$len);
}
$fullstring = $text;
$parsed = get_string_between($fullstring, "tag1", "tag2");
print_r($parsed);
echo ($parsed);
?>
我认为这个问题会发生在这条线:
$fullstring = $text;
我不能完全肯定,如果$文本有从上面的函数中剥离了HTML。当我运行这段代码时,我得到了像我期望的剥离网页,但是我设置的标签之间没有任何内容。
有没有人知道为什么这可能会发生或我失踪?
我认为它是因为你正在将文本声明为循环内的局部变量。所以,当你将$ text分配给fullstring时它实际上是null。我不明白你正在尝试做的,但做到这一点,看看它是否
$fullstring = ""
foreach ($tags as $tag){
#your code as usual
echo($text);
$fullstring = $fullstring.$text;
}
并删除$fullstring = $text
线。
谢谢你解决我的问题!我会upvote你的答案但我没有足够的信誉ñ。我应该如何修改我的问题,如果我能够编辑它,这将帮助更多的人寻找这个简单的问题? – user3205214
您可以通过勾选'正确'标记将我的答案标记为正确答案。 –
,您可以将标题编辑为“for循环后指定字符串时获取空字符串”。顺便说一下,它的主观性很强,所以想想你是如何在谷歌中搜索这个问题的,并且制作了一个这样的标题。 –
您可以使用此:
function get_string_between($string, $start, $end){
$string = ' ' . $string;
$ini = strpos($string, $start);
if ($ini == 0) return '';
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}
$fullstring = 'this is my [tag]dog[/tag]';
$parsed = get_string_between($fullstring, '[tag]', '[/tag]');
echo $parsed; // (result = dog)
什么是你想怎么办? –
我想返回两个“标签”之间的字符串。 – user3205214
虽然我们可以帮助您解决原始问题,但您的代码会提出问题:最终目标是什么?有很多更好的工具可用于解析HTML,具体取决于你想要做什么。 –