首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中获取两个字符串之间的子字符串?

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

Stack Overflow用户
提问于 2011-04-18 05:01:17
回答 36查看 344.6K关注 0票数 175

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

代码语言:javascript
复制
$string = "foo I wanna a cake foo";

我们调用该函数:$substring = getInnerSubstring($string,"foo");

它返回:“我想要一个蛋糕”。

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

代码语言:javascript
复制
$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"}这样的数组。

EN

回答 36

Stack Overflow用户

回答已采纳

发布于 2012-03-23 00:39:25

如果字符串不同(即foo和/foo),请看贾斯汀·库克的this post。我将他的代码复制到下面:

代码语言:javascript
复制
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)
票数 381
EN

Stack Overflow用户

发布于 2014-06-12 23:10:15

正则表达式是最好的选择:

代码语言:javascript
复制
$str = 'before-str-after';
if (preg_match('/before-(.*?)-after/', $str, $match) == 1) {
    echo $match[1];
}

onlinePhp

票数 115
EN

Stack Overflow用户

发布于 2013-02-22 06:59:55

代码语言:javascript
复制
function getBetween($string, $start = "", $end = ""){
    if (strpos($string, $start)) { // required if $start not exist in $string
        $startCharCount = strpos($string, $start) + strlen($start);
        $firstSubStr = substr($string, $startCharCount, strlen($string));
        $endCharCount = strpos($firstSubStr, $end);
        if ($endCharCount == 0) {
            $endCharCount = strlen($firstSubStr);
        }
        return substr($firstSubStr, 0, $endCharCount);
    } else {
        return '';
    }
}

示例用法:

代码语言:javascript
复制
echo getBetween("abc","a","c"); // returns: 'b'

echo getBetween("hello","h","o"); // returns: 'ell'

echo getBetween("World","a","r"); // returns: ''
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5696412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档