регулярное выражение для поиска всех подстрок внутри двойных кавычек php - PullRequest
1 голос
/ 28 августа 2011

У меня есть большая база данных, в которой есть поля абзацев, отформатированные следующим образом:

[«Это первое предложение», «Это второе предложение», «Это третье предложение»,«Это четвертое предложение»]

Я хотел бы извлечь (используя 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 ]

1 голос
/ 28 августа 2011

Если формат был согласованным, вы могли бы просто использовать json_decode - поскольку строки в значительной степени представляют собой списки строк. Сначала я бы полностью проверил это, даже если бы оно длилось несколько минут.

Если вы не сможете использовать несколько более надежный CSV синтаксический анализатор после простого trim использования квадратных скобок (я бы предположил, что это оптимальный подход здесь):

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

Самое простое решение для регулярных выражений будет:

 preg_match_all('/"([^"]*)"\K/', $row, $strings);
0 голосов
/ 28 августа 2011

Вот способ без регулярных выражений:

Вы можете использовать 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);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...