2010-02-19 71 views

回答

-1

您應該使用strpos()搜索任何分隔符(。?!),並找到第一個出現的位置。之後:

$first_sentence = substr($your_sentence, 0, $first_occurance+1); 

編輯:你應該考慮到預防措施時,有沒有分隔符,通過設置一個默認的最大長度,以顯示:

$max_length = 40; 
$stop = $first_occurance > $max_length ? $max_length : $first_occurance + 1; 
$first_sentence = substr($your_sentence, 0, $stop); 
+0

是否可以在MySQL中的select語句直接做了什麼? – 2010-02-19 11:59:56

+0

爲什麼downvote? @ klausbyskov當然,如果你想讓邏輯駐留在那裏。雖然在php方面做的並不是一個繁重的計算。 – chelmertz 2010-02-19 12:05:54

+0

我沒有倒下你。 – 2010-02-19 12:18:09

-1

如果你確定所有的句子停止使用點('。')你可能很容易用正則表達式實現這一點。

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

你應該谷歌 「正則表達式 '你的語言'」。我認爲幾乎所有高級語言都有正則表達式支持。

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

將不完美,但... – 2010-02-19 12:03:43

+0

如果該領域沒有點,該怎麼辦? – chelmertz 2010-02-19 12:07:24

+0

然後你得到全文。 – Clinton 2010-02-19 12:09:13

1

看來,你想直接從你的SQL查詢。

要做到這一點,你可以用SUBSTRING_INDEX

你可能需要將它與REPLACE相結合,採取在考慮感嘆號(!)和問號(?)標記。

+0

當您意識到答案已經存在時,請刪除重複的答案。即使當你開始時它不在那裏,它們在你完成時就會出現。 – 2010-02-19 12:04:50

1

克林頓的回答是偉大的,只是確保你釘結束句子期間返回到字符串:

SELECT CONCAT(SUBSTRING_INDEX('Here is my text. Hope this works!', '.', 1), '.'); 
相關問題