如何在PHP中获取两个字符串之间的子字符串?

2022-08-30 06:29:46

我需要一个函数来返回两个单词(或两个字符)之间的子字符串。我想知道是否有php函数可以实现这一目标。我不想考虑正则表达式(好吧,我可以做一个,但真的不认为这是最好的方法)。思考和功能。下面是一个示例:strpossubstr

$string = "foo I wanna a cake foo";

我们调用函数:
它返回:“我想要一个蛋糕”。$substring = getInnerSubstring($string,"foo");


更新:好吧,到目前为止,我只能在一个字符串中得到一个子字符串,两个单词,你是否允许让我走得更远一点,问我是否可以扩展使用,以获得任何介于delim值之间的字符串,例如:getInnerSubstring($str,$delim)

$string =" foo I like php foo, but foo I also like asp foo, foo I feel hero  foo";

我得到一个类似 .{"I like php", "I also like asp", "I feel hero"}


答案 1

如果字符串不同(即:[foo] & [/foo]),请看贾斯汀·库克(Justin Cook)的这篇文章。我在下面复制他的代码:

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)

答案 2

正则表达式是要走的路:

$str = 'before-str-after';
if (preg_match('/before-(.*?)-after/', $str, $match) == 1) {
    echo $match[1];
}

在线菲律宾


推荐