Intereting Posts
Настройка поставщика PHP OAuth Эффективный способ замены заполнителей переменными Преобразование latin1_swedish_ci в utf8 с PHP Как обнаружить и удалить ненужные атрибуты xmlns: <something> в PHP DOM? Как устранить ошибку « file_get_contents (/var/www/laravel/.env): не удалось открыть поток: нет такого файла или каталога»? копия PIL's Image.paste в PHP зачем мне заканчивать ob_start ()? Как подключить кодер паролей к пользовательскому интерфейсу в Silex? Отправить кнопку не будет показывать результат одним щелчком мыши, это покажет его вторым кликом Symfony2 и Doctrine2: идентификатор / первичный ключ для объекта «X» не указан. Каждый объект должен иметь идентификатор / первичный ключ Печать содержимого с помощью PHP ini_set ('memory_limit', …) не работает и возвращает false; не может понять, почему PHP DateTime __construct () Не удалось проанализировать строку времени (xxxxxxxx) в позиции x jEditable принимает только один идентификатор Остановка кнопки «Назад» при открытии защищенных страниц?

Невозможно вставить предложение в базу данных

У меня есть некоторые предложения. Я должен выбирать предложения, состоящие из более чем шести слов. и затем они будут добавлены в базу данных.

<?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