我准备了在两个字符串之间获取字符串的函数:
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")
。
是否可以修复我的函数,以便在不使用正则表达式的情况下“捕获”完全匹配?
答案 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 '';
}
}