如何解决获取 PHP 中两个分隔符之间所有出现的字符串
我正在使用 PHP 函数来获取字符串中两个分隔符之间的所有内容。但是,如果我多次出现该字符串,它只会选择第一个。例如,我将有:
|foo| hello |foo| nothing here |foo| world |foo|
并且代码只会输出“hello”。 我的功能:
function get_string_between($string,$start,$end){
$string = ' ' . $string;
$ini = stripos($string,$start);
if ($ini == 0) return '';
$ini += strlen($start);
$len = stripos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
解决方法
只需使用 preg_match_all
并保持简单:
$input = "|foo| hello |foo| nothing here |foo| world |foo|";
preg_match_all("/\|foo\|\s*(.*?)\s*\|foo\|/",$input,$matches);
print_r($matches[1]);
打印:
Array
(
[0] => hello
[1] => world
)
,
有点晚了,但这是我的两分钱:
<?php
function between($string,$start = '|',$end = null,$trim = true){
if($end === null)$end = $start;
$trim = $trim ? '\\s*' : '';
$m = preg_split('/'.$trim.'(\\'.$start.'|\\'.$end.')'.$trim.'/i',$string);
return array_filter($m,function($v){
return $v !== '';
});
}
$test = between('|foo| hello |foo| nothing here |foo| world |foo|');
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。