1

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

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

我想提取(使用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 行)都遵循完全相同的格式。我想知道是否有一个正则表达式可以提取双引号内的字符串的所有元素并将它们放入一个数组中。这样,我不必担心开头和结尾是否有没有括号的条目。

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

4

2 回答 2

1

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

如果您无法使用更强大的CSV解析器,只需简单地trim使用方括号(我猜想这是这里的最佳方法):

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

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

 preg_match_all('/"([^"]*)"\K/', $row, $strings);
于 2011-08-28T03:22:18.950 回答
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);
?>
于 2011-08-28T03:22:55.320 回答