PHP在多个HTML行上搜索字符串

I'm using the PHP code below to access an external HTML file, once accessed there is a foreach loop that searches through the HTML to find a specific string that exists between two other strings.

This search works fine when the two search strings ($start_limiter and $end_limiter) are on the same line in the HTML file. However when they are on separate lines it does not work.

I need to be able to get the string between two search strings regardless of what line they're on.

<?php

function findText($start_limiter,$end_limiter,$url)
{
   $start_pos = strpos($url,$start_limiter);
   if ($start_pos === FALSE)
   {
       return FALSE;
   }

   $end_pos = strpos($url,$end_limiter,$start_pos);

   if ($end_pos === FALSE)
   {
      return FALSE;
   }

   return substr($url, $start_pos+1, ($end_pos-1)-$start_pos);
}  


$url = file("testResults.html");

$start_limiter = "firstString";
$end_limiter = "lastString";



foreach ($url as $number => $line)
{
    $res = findText($start_limiter, $end_limiter,trim($line));



    if ($res != FALSE)
    {

        $str2 = substr($res, 9);


    echo $str2;
        ?><br /><?php

}


}

In that case it would be better to analyze the whole string instead of working on partial data (line by line).

Just use file_get_contents(), instead of file() (reads line by line into an array), which reads the whole page into a single string and remove the then superfluous foreach loop.

Instead of file() function you can use file_get_content()

file_get_contents — Reads entire file into a string

file — Reads entire file into an array

<?php
$url = file_get_contents("testResults.html");

function findText($start_limiter,$end_limiter,$url)
{
   $start_pos = strpos($url,$start_limiter);
   if ($start_pos === FALSE)
   {
       return FALSE;
   }

   $end_pos = strpos($url,$end_limiter,$start_pos);

   if ($end_pos === FALSE)
   {
      return FALSE;
   }

   return substr($url, $start_pos+1, ($end_pos-1)-$start_pos);
}  

$start_limiter = "firstString";
$end_limiter = "lastString";
$res = findText($start_limiter, $end_limiter,trim($line));