正则表达式查找双引号php中的所有子串

时间:2011-08-28 03:15:18

标签: php regex double-quotes substring

我有一个大型数据库,其中的段落字段格式如下:

[“这是第一句”,“这是第二句”,“这是第三句”,“这是第四句”]

我想提取(使用PHP)并将它们放在一个数组中,其中每个数组元素都是一个句子。现在,我正在使用它:

$trim_joined = substr($joined, 2, -2); //gets rid of the first and last bracket and double quote
$sentences = explode('", "', $trim_joined);

它似乎有点脆弱,因为我不是100%确定该字段对于数据库的每一行(超过350,000行)遵循这种完全相同的格式。我想知道是否有一个正则表达式提取双引号内的字符串的所有元素并将它们放在一个数组中。这样,如果在开头和结尾没有括号的条目,我不必担心。

不幸的是,我现在对正则表达式几乎一无所知,所以寻求帮助。提前致谢

2 个答案:

答案 0 :(得分:1)

如果格式一致,您可以使用json_decode - 因为行几乎都是字符串列表。我会先测试一下,即使它运行几分钟。

如果没有你可以使用更健壮的CSV解析器,只需trim方括号(我猜想这是最佳方法):

 $strings = str_getcsv(trim(trim($row, "["), "]"));

最简单的正则表达式解决方案是:

 preg_match_all('/"([^"]*)"\K/', $row, $strings);

答案 1 :(得分:0)

这是一种没有正则表达式的方式:

您可以使用json_decode()

<?php
$data='["This is the first sentence", "This is the second sentent", "This is the third sentence", "This is the fourth sentence"]';
$arr=json_decode($data,true);
print_r($arr);
?>