У меня есть некоторые предложения. Я должен выбирать предложения, состоящие из более чем шести слов. и затем они будут добавлены в базу данных.
<?php require_once 'conf/conf.php'; $text = " Poetry. Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories. "; $sentences = explode(".", $text); foreach ($sentences as $sentence) { if (count(preg_split('/\s+/', $sentence)) > 6) { $save = $sentence. "."; $sql = mysql_query("INSERT INTO tb_name VALUES('','$save')"); } } ?>
Результатом является только второе предложение, которое вставлено в базу данных => «Вы читаете поэзию во время полета? Многие люди считают, что это приятно читать на длинных рейсах ». в то время как третье предложение также должно быть вставлено. пожалуйста, помогите мне, спасибо:)
Вот решение, которое вы ищете. Вы не можете добавить несколько строк, так как значение вашего идентификатора остается неуказанным и оно является ключом к таблице. Поскольку вы хотите добавить предложения в одну строку, вам нужно выполнить один запрос.
$text = " Poetry. Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories. "; $sentences = explode(".", $text); $save = array(); foreach ($sentences as $sentence) { if (count(preg_split('/\s+/', $sentence)) > 6) { $save[] = $sentence. "."; } } if( count( $save) > 0) { $sql = mysql_query("INSERT INTO tb_name VALUES('','" . implode( ' ', $save) . "')"); }
Теперь оба предложения будут вставлены в одну строку в базе данных, разделенные пробелом. Вы можете изменить то, что они разделены, если вы измените первый параметр на implode()
.
Запрос, который генерируется, следующий:
INSERT INTO tb_name VALUES('',' Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories.')
Заменить:
$sentences = explode(".", $text);
с этим:
$newSentences = array(); $sentences = preg_split("/(\.|\?|\!)/", $text, -1, PREG_SPLIT_DELIM_CAPTURE); $odd = false; foreach($sentences as $sentence) { $sentence = trim($sentence); if($sentence != '') { if(!$odd) { $newSentences[] = $sentence; } else { $newSentences[count($newSentences) - 1] .= $sentence; } $odd = !$odd; } }
Он отделяет предложения, заканчивающиеся на .
или ?
или !
, В foreach только что собраны предложения.
Пример здесь: http://codepad.org/kk3PsVGP