Я люблю эти два решения
function GetBetween($content,$start,$end)
{
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
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);
}
Я также сделал несколько тестов с обоими решениями выше, и оба дают почти одинаковое время. Вы также можете проверить это. Я дал обеим функциям файл для чтения, который содержал около 60000 символов (пересмотрено с помощью счетчика слов г-жи Ворд), и обе функции дали около 0,000999 секунд на поиск.
$startTime = microtime(true);
GetBetween($str, '<start>', '<end>');
echo "Explodin Function took: ".(microtime(true) - $startTime) . " to finish<br />";
$startTime = microtime(true);
get_string_between($str, '<start>', '<end>');
echo "Subsring Function took: ".(microtime(true) - $startTime) . " to finish<br />";