我还在学习PHP正则表达式,所以我希望有人可以帮助我完成我想要完成的任务.
$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
Run Code Online (Sandbox Code Playgroud)
我想要做的是匹配读取的字符串部分
var MyCode ="
Run Code Online (Sandbox Code Playgroud)
在匹配该部分后,我想检索该字符串后面的其余动态生成的字符.在这个例子中,[dentline]是8个字符,但情况可能并非总是如此.因此,我希望一直匹配,直到我到达
";
Run Code Online (Sandbox Code Playgroud)
在我有效地捕获了字符串的那一部分之后,我想剥离字符串,以便剩下的信息是双引号之间的内容
dentline
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
试试这个:
$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
$matches = array();
preg_match('/var MyCode = "(.*?)";/', $string, $matches);
echo $matches[1];
Run Code Online (Sandbox Code Playgroud)
结果:
dentline
Run Code Online (Sandbox Code Playgroud)
说明
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);
Run Code Online (Sandbox Code Playgroud)
在这个表达式中\w意味着"匹配任何单词字符".您可能还希望使用\s+而不是空格,以便可以匹配任何空白字符(也包括制表符和新行)中的一个或多个.类似地\s*匹配零个或多个空格.所以你尝试的另一种可能性是:
preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |