簡體   English   中英

在PHP中使用正則表達式拆分字符串

[英]Split a string using regular expressions in 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 "

也可以輸入變量

簡單的輸入導致單個字符串

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這兩個變量

我應該怎么做?

這應該可以解決問題:

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

您要匹配一個引號,然后至少匹配一個字母數字字符,再匹配一個結束引號。 將字母數字字符放在括號中以捕獲輸出,並將其放在$Matches

您的$ line變量值是多少?

也許您可以在常規實驗$ params [o中查看var_dump($ params)的結果

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

因此,它將接受文字字符串和字符串變量。...@Zach Rattner的答案的大感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM