2010-12-02 5 views
0

Я написал код PHP для получения некоторой части данного динамического предложения, например. "this is a test sentence":Как мы можем разбить предложение

substr($sentence,0,12); 

Я получаю результат:

this is a te 

Но мне это нужно остановить как полное слово вместо разделения слова:

this is a 

Как я могу это сделать, помня что $sentence не является фиксированной строкой (это может быть что угодно)?

+0

Итак, чтобы быть понятным, как вы решаете, сколько символов включить? И есть идея, что, если вы закончите с частичным словом в конце, вы удалите частичное слово (вместо его завершения)? Что делать, если первое слово очень длинное - нормально ли заканчивать пустую строку? – psmears 2010-12-02 17:00:48

ответ

3

использование wordwrap

+0

В частности, `$ lines = wordwrap ($ sentence, 12); $ firstLine = $ lines [0]; ` – 2010-12-02 17:00:26

+0

@Michael - wordwrap не возвращает массив. – RabidFire 2010-12-02 17:19:05

1

Попробуйте использовать explode() функцию.

В вашем случае:

$expl = explode(" ",$sentence); 

Вы получите свое наказание в виде массива. Первое слово будет $ expl [0], второе - $ expl [1] и т. Д. Чтобы распечатать его на экране, используйте:

$n = 10 //words to print 
for ($i=0;$i<=$n;$i++) { 
    print $expl[$i]." "; 
} 
2

первый. использовать взрыв в космосе. Затем подсчитайте каждую часть + общую собранную строку, и если она не перейдет через предел, вы присоедините ее к строке с пробелом.

3

Если вы используете PHP4, вы можете просто использовать split:

$resultArray = split($sentence, " "); 

Каждый элемент массива будет одно слово. Однако будьте осторожны с пунктуацией.

explode бы рекомендуемый метод в PHP5:

$resultArray = explode(" ", $sentence); 
0

это просто psudo код не PHP,

char[] sentence="your_sentence"; 
string new_constructed_sentence=""; 
string word=""; 
for(i=0;i<your_limit;i++){ 
character=sentence[i]; 
if(character==' ') {new_constructed_sentence+=word;word="";continue} 
word+=character; 
} 

new_constructed_sentence является то, что вы хотите !!!

0

Создайте функцию, которую вы можете повторно использовать в любое время. Это будет искать последнее пространство, если длина данной строки больше, чем количество символов, которые вы хотите обрезать.

function niceTrim($str, $trimLen) { 
    $strLen = strlen($str); 
    if ($strLen > $trimLen) { 
     $trimStr = substr($str, 0, $trimLen); 
     return substr($trimStr, 0, strrpos($trimStr, ' ')); 
    } 
    return $str; 
} 

$sentence = "this is a test sentence"; 
echo niceTrim($sentence, 12); 

Это напечатает

this is a 

по мере необходимости.

Надеюсь, это решение, которое вы ищете!

Смежные вопросы