php搜索功能使用通配符

时间:2010-08-30 19:12:30

标签: php regex

这个问题几乎与Php search string (with wildcards)相同,但会有所不同。我很难理解所提议的解决方案,以使我自己的解决方案。也许你们可以帮忙吗?

我有一个开始字符串和一个结束字符串,我用它来夹住感兴趣的字符串。

这是我目前正在使用的功能:

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);
}

有时我的开头字符串需要在其中包含通配符,以说明模板的动态部分

例如,我需要将它作为我的开始代码变量:

$begin_code = "id='%wildcard%' class='sailors_assistant_%wildcard%'>";

并编辑我上面的原始函数以检测%wildcard%(s)并在使用他们的夹心搜索-n-grabs时考虑它们。

有任何建议吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用正则表达式:

function get_string_between($string, $start, $end) {
    $start = str_replace("%wildcard%", ".*?", preg_quote($start, "/");
    $end = str_replace("%wildcard%", ".*?", preg_quote($end, "/");
    $regex = "/$start(.*?)$end/";
    if (preg_match($regex, $string, $matches))
        return $matches[1];
    else
        return false;
}