我有下一个字符串:
$string = '["["123456","NAME","1","INFORMATION","15/12/2015","","","0","OTHER ATTRIBUTE","",""]","["["123", "OTHER"]"';
我想提取双引号之间的字母数字信息,我尝试使用这个答案
Regex to get content between single and double quotes php
但输出是这样的,
[0]=> array(12) { [0]=> string(3) ""["" [1]=> string(3) "","" [2]=> string(3) "","" [3]=> string(3) "","" [4]=> string(3) "","" [5]=> string(3) "","" [6]=> string(3) "","" [7]=> string(3) "","" [8]=> string(3) "","" [9]=> string(3) "","" [10]=> string(3) "","" [11]=> string(3) ""]"" } [1]=> array(12) { [0]=> string(1) """ [1]=> string(1) """ [2]=> string(1) """ [3]=> string(1) """ [4]=> string(1) """ [5]=> string(1) """ [6]=> string(1) """ [7]=> string(1) """ [8]=> string(1) """ [9]=> string(1) """ [10]=> string(1) """ [11]=> string(1) """ } [2]=> array(12) { [0]=> string(1) "[" [1]=> string(1) "," [2]=> string(1) "," [3]=> string(1) "," [4]=> string(1) "," [5]=> string(1) "," [6]=> string(1) "," [7]=> string(1) "," [8]=> string(1) "," [9]=> string(1) "," [10]=> string(1) "," [11]=> string(1) "]" }
我怎样才能实现这个目标?
最佳答案
您的输入 "["123456"
... 与 link you mentioned 不同。这里没有单引号。
一种想法是在至少一个 [A-Za-z0-9_]
模式中需要一个 \w
word character
if(preg_match_all('/"([^"]*?\w[^"]*)"/', $string, $out) > 0)
print_r($out[1]);
[^"]*
匹配任意数量的字符,即 not"
。*
之后的?
使其成为 lazy 。- 在第一个 capture group(括号内的组)捕获的
$1
中查找匹配项。
See demo and more explanation at regex101 或 PHP demo at eval.in
关于php - 从字符串php正则表达式获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614329/