2013-10-13 54 views
1

正则表达式的字符串我在出项目这一问题拆分使用PHP

$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 " 

变量也可以被输入

si mple输入导致到一个字符串

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,它是变量

我应该怎么办?

+1

不能设计一个没有输入字符串的正则表达式,我假设它的''askdj asjdk asdasndw''',给出几个例子,如果你可以 – gwillie

+2

$ params [0]是一个字符串数组。检查文档:http://php.net/manual/en/function.preg-match-all.php – Ashalynd

+1

不知道你的输入字符串是什么,但如果它是@gwillie提到的,那么这对我有效:' array(3){[0] => string(5)“askdj”[1] => string(5)“asjdk”[2] => string(8)“asdasndw”} – ChicagoRedSox

回答

1

这应该做的伎俩:

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

要匹配报价,那么至少有一个字母数字字符,然后结束报价。将字母数字字符放在括号中以捕获输出并将其放入$Matches

+0

我编辑了这个问题,还有另一个输入,其中包含变量作为参数..我已经回答了这个问题......生病发布在底部 – InnZaayynn

1

什么是您的变量$行值?

也许你可以的var_dump($ params)方法看到它的结果是,在常规expessions $ PARAMS【O

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

所以这将接受文字字符串和字符串变量....大感谢@Zach拉特纳回答..