Hello!
Я хотел бы извлечь все цитаты из текста. Дополнительно, имя цитируемого лица должно быть извлечено. DayLife делает это очень хорошо.
Пример:
«Они думают, что игра окончена», - сказал один высокопоставленный чиновник администрации.
Фраза Они думают, что это «игра окончена» , и цитируемое лицо одного старшего сотрудника администрации следует извлечь.
Как вы думаете, это возможно? Различия между цитатами и словами в кавычках можно различить только в том случае, если вы проверите, упоминается ли упомянутое лицо.
Пример:
«Я думаю, что это серьезно и ухудшается», - заявил в воскресенье адмирал Маллен в программе CNN «Государство Союза».
Отрывок Состояние Союза не является цитатой. Но как вы это обнаружили? а) Вы проверяете, упоминается ли упомянутое лицо. б) Вы считаете пустые места в предполагаемой цитате. Если пробелов меньше 3, это не будет цитата, верно? Я бы предпочел б), так как не всегда цитируемый человек по имени.
Как начать?
Сначала я заменил бы все типы кавычек одним типом, чтобы позже вам пришлось проверять только одну кавычку.
<?php
$text = '';
$quote_marks = array('“', '”', '„', '»', '«');
$text = str_replace($quote_marks, '"', $text);
?>
Тогда я бы извлек все фразы между кавычками, которые содержат более 3 пробелов:
<?php
function extract_quotations($text) {
$result = preg_match_all('/"([^"]+)"/', $text, $found_quotations);
if ($result == TRUE) {
return $found_quotations;
// check for count of blank spaces
}
return array();
}
?>
Как вы могли бы улучшить это?
Надеюсь, вы мне поможете. Заранее большое спасибо!