2010-02-19 1 views

ответ

-1

Вы должны найти любые разделители (.?!) С помощью 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); 
+0

это может быть сделано непосредственно в операторе отбора в MySQL? –

+0

Почему downvote? @klausbyskov уверен, если вы хотите, чтобы там находилась логика. Однако это не тяжелый расчет на php-стороне. – chelmertz

+0

Я не спустил вас вниз. –

-1

Если вы уверены, что все предложения прекратить с dot ('.'), вы, вероятно, можете достичь этого довольно легко с помощью регулярных выражений.

http://www.regular-expressions.info/

Вы должны Google "регулярное выражение 'язык'". Я думаю, что почти каждый язык высокого уровня поддерживает регулярные выражения.

1

Это наивный подход к вашей проблеме. Тем не менее, он полагается на каждую полную остановку, имеющую место сразу после этого.

select substr(article, 0, instr(article, '. ')) from articles_table; 

Если вам нужно, чтобы это было более надежным, вам, вероятно, понадобилось бы регулярное выражение.

5

Вы можете использовать функцию SUBSTRING_INDEX:

SELECT SUBSTRING_INDEX('Here is my text. Hope this works!', '.', 1); 

Если нет точек в тексте, он будет возвращать весь текст.

+0

Не будет идеальным, но ... –

+0

Что делать, если в этом поле нет точки? – chelmertz

+0

Затем вы получите весь текст. – Clinton

1

Похоже, что вы хотите это непосредственно из своего SQL-запроса.

Чтобы сделать это, вы можете использовать SUBSTRING_INDEX

Вы, вероятно, нужно сочетать его с REPLACE принять во внимание восклицание (!) И вопрос (?) Знаков.

+0

Удалите повторяющиеся ответы, когда вы поймете, что ответ уже существует. Даже когда этого не было, когда вы начали, они появляются, когда вы закончите. –

1

ответ Клинтон велик, просто убедитесь, что вы лавировать, что конца-предложения период обратно на строку:

SELECT CONCAT(SUBSTRING_INDEX('Here is my text. Hope this works!', '.', 1), '.'); 
Смежные вопросы