在两个字符串之间获取字符串是找不到的调用

时间:2014-05-08 07:53:54

标签: php

我准备了在两个字符串之间获取字符串的函数:

    function getStringBetween($content,$start,$end){
        $r=explode($start,$content);
        if (isset($r[1])){
            $r=explode($end,$r[1]);
            return $r[0];
        }
        return '';

    }

我的exaple字符串是(这个字符串可能是由100多个不同的行构建的

$str = 'PROTOCOL-tcp80 Time ("Fri Oct 15 15:25:04 2010");
PROTOCOL-tcp Time ("Fri Oct 19 11:32:13 2010")';

在调用类似函数之后:getStringBetween($str,"PROTOCOL-tcp",";")

我希望得到结果字符串Time ("Fri Oct 19 11:32:13 2010",但我的功能是找到第一个匹配PROTOCOL-tcp80,所以结果是80 Time ("Fri Oct 15 15:25:04 2010")

是否可以修复我的函数,以便在不使用正则表达式的情况下“捕获”完全匹配?

1 个答案:

答案 0 :(得分:1)

以下是使用正则表达式的方法。 \b匹配字边界,因此可确保您正在寻找的完全匹配类型。

function getStringBetween($content,$start,$end){
    $start = preg_quote($start);
    $end = preg_quote($end);
    if (preg_match("/\b$start\b(.*?)\b$end\b/", $content, $match)) {
        return $match[1];
    } else {
        return '';
    }
}