Мне нужно отобразить первое предложение (вплоть до первой полной остановки) каждой статьи в моей базе данных с использованием MySQL.Получить первое предложение статьи, хранящееся в таблице MySQL
Может кто-нибудь, пожалуйста, помогите мне?
Мне нужно отобразить первое предложение (вплоть до первой полной остановки) каждой статьи в моей базе данных с использованием MySQL.Получить первое предложение статьи, хранящееся в таблице MySQL
Может кто-нибудь, пожалуйста, помогите мне?
Вы должны найти любые разделители (.?!) С помощью strpos()
и найти позицию первого появления. После этого:
$first_sentence = substr($your_sentence, 0, $first_occurance+1);
Edit: вы должны принять во предосторожности, когда нет разделителей, установив, что максимальная длина по умолчанию, чтобы показать:
$max_length = 40;
$stop = $first_occurance > $max_length ? $max_length : $first_occurance + 1;
$first_sentence = substr($your_sentence, 0, $stop);
Если вы уверены, что все предложения прекратить с dot ('.'), вы, вероятно, можете достичь этого довольно легко с помощью регулярных выражений.
http://www.regular-expressions.info/
Вы должны Google "регулярное выражение 'язык'". Я думаю, что почти каждый язык высокого уровня поддерживает регулярные выражения.
Это наивный подход к вашей проблеме. Тем не менее, он полагается на каждую полную остановку, имеющую место сразу после этого.
select substr(article, 0, instr(article, '. ')) from articles_table;
Если вам нужно, чтобы это было более надежным, вам, вероятно, понадобилось бы регулярное выражение.
Вы можете использовать функцию SUBSTRING_INDEX
:
SELECT SUBSTRING_INDEX('Here is my text. Hope this works!', '.', 1);
Если нет точек в тексте, он будет возвращать весь текст.
Похоже, что вы хотите это непосредственно из своего SQL-запроса.
Чтобы сделать это, вы можете использовать SUBSTRING_INDEX
Вы, вероятно, нужно сочетать его с REPLACE
принять во внимание восклицание (!) И вопрос (?) Знаков.
Удалите повторяющиеся ответы, когда вы поймете, что ответ уже существует. Даже когда этого не было, когда вы начали, они появляются, когда вы закончите. –
ответ Клинтон велик, просто убедитесь, что вы лавировать, что конца-предложения период обратно на строку:
SELECT CONCAT(SUBSTRING_INDEX('Here is my text. Hope this works!', '.', 1), '.');
это может быть сделано непосредственно в операторе отбора в MySQL? –
Почему downvote? @klausbyskov уверен, если вы хотите, чтобы там находилась логика. Однако это не тяжелый расчет на php-стороне. – chelmertz
Я не спустил вас вниз. –