PHP preg_match_all 进入功能时不起作用

PHP preg_match_all is not working when into function

有一组代码我已经使用了一段时间,用于在文件中查找字符串。但是当我将它放入一个函数中时,我没有得到结果,我认为它是 preg_match_all 不起作用。我不知道如何解决这个问题。

这是我的代码(copy/pasted 来自教程):

function getprice($keyword, $outputvar) {
    $pattern = preg_quote($keyword, '/');
    $pattern = "/^.*$pattern.*$/m";
    echo "pattern:" . $pattern;
    if(preg_match_all($pattern, $contents, $matches)){
        $str=implode("\n", $matches[0]);
        $str = substr( $str, ( $pos = strpos( $str, ':' ) ) === false ? 0 : $pos + 1 );
        $$outputvar = $str;
    }
    else {
        $$outputvar = "99999";
    }
}

不确定您要用 $outputvar$$outputvar 做什么,但不要使用它们。 return 东西。另外,需要传入$contents

function getprice($keyword, $contents) {
    $pattern = preg_quote($keyword, '/');
    $pattern = "/^.*$pattern.*$/m";

    if(preg_match_all($pattern, $contents, $matches)){
        $str = implode("\n", $matches[0]);
        $str = substr( $str, ( $pos = strpos( $str, ':' ) ) === false ? 0 : $pos + 1 );
        return $str;
    }
    else {
        return "99999";
    }
}

然后使用:

$outputvar = getprice($some_keyword, $some_contents);

这只解决函数的使用问题,而不是您的正则表达式或解析的数据,因为您还没有发布任何测试用例。