1

我在项目中有这个问题

$line = substr($line,8);
$LIT_YARN = '".*"';
$VAR_NAME = '[A-Za-z][a-zA-Z0-9]*';
$TEMP2 = "/($LIT_YARN|$VAR_NAME)/";

$line = trim($line);
preg_match_all($TEMP2,$line,$params);

var_dump($params[0]);

简单的输入是

" "askdj" "asjdk" "asdasndw" "

复杂的输入是

" "asd" Y "asd" X "

变量也可以输入

简单的输入导致单个字符串

params[0] => "askdj" "asjdk" "asdasndw"

我期待这样

params[0] => "askdj"
params[1] => "asjdk"
params[2] => "asdasndw"

复杂的输入应该导致

params[0] => "asd"
params[1] => 'Y'
params[2] => "asd"
params[3] => 'X'

包括作为变量的 X 和 Y

我该怎么做?

4

3 回答 3

0
preg_match_all("/\"([A-Za-z0-9\s]+)\"|([A-Za-z][A-Za-z0-9]*)/", '" "askdj" "asjdk" "asdasndw" "', $Matches))

所以这将接受文字字符串和字符串变量......非常感谢@Zach Rattner's Answer..

于 2013-10-13T03:39:18.260 回答
0

这应该可以解决问题:

preg_match_all('/"([A-Za-z0-9]+)"/', '" "askdj" "asjdk" "asdasndw" "', $Matches))

您想匹配一个引号,然后是至少一个字母数字字符,然后是一个结束引号。将字母数字字符放在括号中以捕获输出并将其放入$Matches.

于 2013-10-13T03:22:33.147 回答
0

你的变量 $line 值是多少?

也许你可以 var_dump($params) 在常规表达式中看到它的结果 $params[o

于 2013-10-13T03:23:05.240 回答