我还在学习PHP正则表达式,所以我希望有人可以帮助我完成我想要完成的任务。
$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
我想要做的是匹配字符串中的
部分var MyCode ="
在匹配该部分后,我想检索该字符串后面的其余动态生成的字符。在这个例子中,[dentline]是8个字符,但情况可能并非总是如此。因此,我希望一直匹配到达
";
在我有效地捕获了字符串的那一部分之后,我想剥离字符串,以便剩下的信息是双引号之间的内容
dentline
非常感谢任何帮助!
答案 0 :(得分:8)
试试这个:
$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
$matches = array();
preg_match('/var MyCode = "(.*?)";/', $string, $matches);
echo $matches[1];
结果:
dentline
<强>解释强>
var MyCode = " Match this string literally and exactly ( Start a capturing group. .*? Match any characters, as few as possible (not greedy) ) End the capturing group. "; Match the closing double quote followed by a semi-colon
捕获组“捕获”匹配的内容并将其存储在数组$matches
中,以便之后可以访问它。
有关这些结构的更多信息,请访问:
<强>变体形式强>
如果“MyCode”可能有所不同,请改用:
preg_match('/var \w+ = "(.*?)";/', $string, $matches);
在此表达式中\w
表示“匹配任何单词字符”。您可能还希望使用\s+
而不是空格,以便可以匹配任何空格字符(也包括制表符和新行)中的一个或多个。类似地,\s*
匹配零个或多个空格。所以你尝试的另一种可能性是:
preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);