php - 从字符串php正则表达式获取内容

标签 php regex

我有下一个字符串:

$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 regex101PHP demo at eval.in

关于php - 从字符串php正则表达式获取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614329/

相关文章:

php - 使用 Javascript 将 href 文本替换为其他内容

regex - R 中第 n 次出现的正则表达式

python - 在 MySQL 中搜索短语关键字

swift - 正则表达式与多个组 swift

javascript - 正则表达式允许负值最多保留 4 位小数

javascript - 使用ajax提交表单时如何发送电子邮件

php - 使用php将上传的视频文件编码为.flv

php - 编辑和删除按钮在php,ajax中添加到服务器端数据表

php - 如何在CodeIgniter中表示SQL的 `having count(' *')`?

php - 智能抓取第一段/起始文本