获取两个字符串PHP之间的子串 - 阅读HTML

时间:2015-04-08 04:59:36

标签: php html string

我在查找两个字符串之间的字符串时遇到了很多麻烦。

这是我目前的代码

<?

$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;
  
 	//print_r($text);
	echo($text);
	
	
}


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 = $text;
$parsed = get_string_between($fullstring, "tag1", "tag2");

print_r($parsed);

echo ($parsed);

?>

我认为问题发生在这一行:

$fullstring = $text;

我不完全确定$ text是否具有上述函数中的精简HTML。当我运行这个代码时,我得到了剥离的网页,就像我期望的那样,但我在设置的标签之间什么都没有。

有谁知道为什么会发生这种情况或我错过了什么?

2 个答案:

答案 0 :(得分:0)

我认为是因为你在for循环中将文本声明为局部变量。所以,在你将$ text分配给fullstring之后,它实际上是空的。我不明白你要做什么,但要做到这一点,看看它是否有效

$fullstring = ""
foreach ($tags as $tag){
    #your code as usual
    echo($text);
    $fullstring = $fullstring.$text;
}

并删除$fullstring = $text行。

答案 1 :(得分:0)

你可以用这个:

    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)

Reference