我使用PHP具有下列字符串:智能字換行?
$message = 'hello, DavidPalmerUgroImmIErogandTagroChechiken ho are you?';
我要拆分的word
如果字符串的任何字長然後15 characters
。我怎樣才能做到這一點?
我搜索並找到了分裂WHOLE字符串的答案,但不僅僅是分裂一個WORD,如果該特定單詞超過15個字符長。請幫忙!
我使用PHP具有下列字符串:智能字換行?
$message = 'hello, DavidPalmerUgroImmIErogandTagroChechiken ho are you?';
我要拆分的word
如果字符串的任何字長然後15 characters
。我怎樣才能做到這一點?
我搜索並找到了分裂WHOLE字符串的答案,但不僅僅是分裂一個WORD,如果該特定單詞超過15個字符長。請幫忙!
你也可以嘗試這樣的事情。
$newMessage = preg_replace('/(\S{15})(?=\S)/', '$1 ', $message);
你是正則表達式GEEk:P這是一個很好的選擇。謝謝Sharma – user2854563 2014-09-22 12:28:53
我很高興它適合你:) – 2014-09-22 12:29:39
這是一個相對基本解決,有事情可以改善(更好的詞檢測,將14封則中斷的話連字符等),但是這應該給你一個很好的起點。
:對於課程只是馬:-)分割字符串成單詞 -
您也可以與正則表達式做到這一點(/[^\s]{15,}/
作爲基本出發點),如果你感到滿意的是
$words = explode(' ', $message); // could also split on other punctuation or detect words more reliably here
迭代的話,看看是否有任何> 15個字母
foreach ($words AS $key => $word) {
if (strlen($word) > 15) {
// ...
}
}
然後當你找到一個,把它切成更小的部分
$words[$key] = implode(' ', str_split($word, 15));
最後,加入它所有備份。
$words = implode(' ', $words);
完整代碼:
$words = explode(' ', $message); // could also split on other punctuation or detect words more reliably here
foreach ($words AS $key => $word) {
if (strlen($word) > 15) {
$words[$key] = implode(' ', str_split($word, 15));
}
}
$words = implode(' ', $words);
如果字符串有三個連續空格,這個工作是否會起作用? 'hello worldasdfasdfasdfasdf werwerwerwer' – 2014-09-22 12:17:59
是的,數組條目將是一個空字符串(''''),將會失敗'> 15',因此只會被放回輸出爲3個空格 – Joe 2014-09-22 12:19:09
此外,字符串不應該有多個連續的空格,如果是正常的文字。 – 2014-09-22 12:22:11
問題是,如果它大於15個字符,我怎麼才能找到WORD? – user2854563 2014-09-22 12:19:50
你想如何拆分?在兩者之間添加空格或添加超級? – 2014-09-22 12:15:24
只是想在兩個SPLITTED單詞之間使用空格(分割一個LONG單詞後) – user2854563 2014-09-22 12:16:10