我在项目中有这个问题
$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
我应该怎么做?
答案 0 :(得分:1)
这应该可以解决问题:
preg_match_all('/"([A-Za-z0-9]+)"/', '" "askdj" "asjdk" "asdasndw" "', $Matches))
您想匹配报价,然后是至少一个字母数字字符,然后是结束报价。将字母数字字符放在括号中以捕获输出并将其放入$Matches
。
答案 1 :(得分:1)
你的变量$ line值是多少?
也许你可以var_dump($ params)看到它的结果,在常规的经验$ params [o
答案 2 :(得分:0)
preg_match_all("/\"([A-Za-z0-9\s]+)\"|([A-Za-z][A-Za-z0-9]*)/", '" "askdj" "asjdk" "asdasndw" "', $Matches))
所以这将接受Literal Strings和String Variables .... @ Zach Rattner's Answer的大谢谢..