Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP查找字符串和以下未知字符_Php_Regex - Fatal编程技术网

PHP查找字符串和以下未知字符

PHP查找字符串和以下未知字符,php,regex,Php,Regex,我还在学习PHP正则表达式,所以我希望有人能帮助我完成我想要完成的任务 $string = 'Writing to tell you that var MyCode = "dentline"; Learn it.'; 我要做的是匹配字符串中读取的部分 var MyCode =" 匹配该部分后,我希望检索该字符串后面动态生成的其余字符。在本例中,[dentline]是8个字符,但情况可能并非总是如此。因此,我想一路比赛,直到我到达终点 "; 在我有效地捕获了字符串的这一部分之后,我想剥离字符

我还在学习PHP正则表达式,所以我希望有人能帮助我完成我想要完成的任务

$string = 'Writing to tell you that var MyCode = "dentline"; Learn it.';
我要做的是匹配字符串中读取的部分

var MyCode ="
匹配该部分后,我希望检索该字符串后面动态生成的其余字符。在本例中,[dentline]是8个字符,但情况可能并非总是如此。因此,我想一路比赛,直到我到达终点

";
在我有效地捕获了字符串的这一部分之后,我想剥离字符串,这样剩下的信息就是双引号之间的内容

dentline
非常感谢您的帮助

试试这个:

$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 在这个表达式中,
\w
表示“匹配任何单词字符”。您可能还希望使用
\s+
而不是空格,以便可以匹配一个或多个空白字符(以及制表符和新行)。类似地,
\s*
匹配零个或多个空格。因此,您可以尝试的另一种可能性是:

preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);

您的字符串是否总是双引号,而不是单引号?您的字符串是否可以包含转义引号?在代码中空格是否重要?变量名总是“MyCode”还是可以是其他名称?字符串总是双引号。没有转义字符,没有空格,变量名没有更改。就这样。太棒了,谢谢!你能提供更多的信息来说明这是如何工作的以及为什么工作的吗。谢谢
preg_match('/var\s+\w+\s*=\s*"(.*?)"\s*;/', $string, $matches);