正则表达式,用于查找值并在PHP中返回

时间:2014-02-24 11:03:40

标签: php regex string

我一直在努力解决这个问题2个小时,但没有成功。我觉得它有点复杂。 我试图在PHP中解析脚本文件并将一些值返回给用户。我想要的是这样的:

_ =对象 runFunction blah blah blah

基本上我想要的是(在算法中):

  • IF 在行中找到不区分大小写的runFunction(因为它可能是runfunction)
  • AND 该行以_(下划线)开头(或者如果可能,在=之前有一个以_开头的值,以确保结果)
  • 然后在=之前返回该下划线值。

通常99.9%的格式是这样的......但是有一些小案例可能是这样的:

_ = _object runFunction blah blah blah (如果_之后_ =搞砸事情)。

这里有任何帮助:)? 感谢

2 个答案:

答案 0 :(得分:0)

尝试类似:

$str = 'YOUR FILE CONTENTS HERE';
$match = preg_match_all('/(_[a-zA-Z0-9_]+) ?= ?[a-zA-Z0-9_]+ runFunction/s',$str,$matches);

var_dump($matches);

您可能需要添加多行标记。

答案 1 :(得分:0)

怎么样

if (preg_match('/^_([^=]+?)(?=\s*=).*runfunction/im', $subject, $regs)) {
    $result = $regs[1];
} else {
    $result = "";
}

你可以排除最初的“开始”锚点,你的下划线可能不在行的开头

这是正则表达式本身。结果是在捕获第1组

^_([^=]+?)(?=\s*=).*runfunction

正则表达式    寻找线的起点    匹配第一个下划线    捕获不是'='的所有内容到捕获组1中      如果它后跟0个或更多个空格和等号。    然后将所有内容捕获到运行函数中。

需要设置不区分大小写和多行选项

如果第一个下划线不需要在行的开头,则删除锚点。