[英]Split String With preg_match
我有字符串:
$productList="
Saluran Dua(Bothway)-(TAN007);
Speedy Password-(INET PASS);
Memo-(T-Memo);
7-pib r-10/10-(AM);
FBI (R/N/M)-(Rr/R(A));
";
我想要這樣的結果:
Array(
[0]=>TAN007
[1]=>INET PASS
[2]=>T-Memo
[3]=>AM
[4]=>Rr/R(A)
);
我用了 :
$separator = '/\-\(([A-z ]*)\)/';
preg_match_all($separator, $productList, $match);
$value=$match[1];
但是結果是:
Array(
[0]=>INET PASS
[1]=>AM
);
必須有錯誤的代碼,有人可以幫助嗎?
您的regex
不包括您要捕獲的文本中可能出現的所有字符。
正確的regex
為:
$match = array();
preg_match_all('/-\((.*)\);/', $productList, $match);
說明 (從內到外):
.*
匹配任何東西; (.*)
是上面括號中的表達式,用於捕獲$match[1]
; -\\((.*)\\);
在上下文中是上面的內容:如果在-(
之前加);
之后匹配,則匹配);
; 括號轉義為使用其字面值而不是其特殊的regex
解釋; -
在正則表達式中; 僅當在字符范圍( [AZ]
,fe)中使用它時,它才具有特殊的解釋,但是即使在連字符( -
)緊接在[
或]
之前,連破折號( -
)也沒有特殊含義; 例如[-AZ]
表示:破折號( -
)或任何大寫字母( A
至Z
)。 現在, print_r($match[1]);
看起來像這樣:
Array
(
[0] => TAN007
[1] => INET PASS
[2] => T-Memo
[3] => AM
[4] => Rr/R(A)
)
試試這個ReGex
$separator = '#\-\(([A-Za-z0-9/\-\(\) ]*)\)#';
對於第一行,您需要0-9
對於第3行,您需要-in和
在最后一行中,您需要()試試這個
#\-\(([a-zA-Z/0-9(\)\- ]*)\)#
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.