2013-09-20 3 views
0

Так что в основном я сильно сложный, и я бы просто хотел сохранить первые 4 слова.Как сохранить только первые 4 слова в строке?

У меня было много работы, хотя есть некоторые случаи, которые нарушают его.

Вот мой текущий код:

$title = "blah blah blah, long paragraph goes here"; 
//Make title only have first 4 words 
$pieces = explode(" ", $title); 
$first_part = implode(" ", array_splice($pieces, 0, 4)); 
$title = $first_part; 
//title now has first 4 words 

Основные случаи, которые нарушают его являются line-breaks. Если у меня есть пункт вроде этого:

Testing one two three 
Testing2 a little more three two one 

$title будет равна Testing one two three Testing2

Другой пример:

Testing 
test1 
test2 
test3 
test4 
test5 
test6 
sdfgasfgasfg fdgadfgafg fg 

Название будет равна = Testing test1 test2 test3 test4 test5 test6 sdfgasfgasfg fdgadfgafg fg

По какой-то причине захватив первое слово на следующей строке.

У кого-нибудь есть предложения по устранению этого?

ответ

1

Это может быть немного Hacky, но я хотел бы попробовать только с помощью str_replace(), чтобы избавиться от каких-либо разрывов строк.

$titleStripped = str_replace('\n', ' ', $title); 
$pieces - explode(' ', $title); 

В зависимости от вашего приложения и ожидаемых данных. Если вы ожидаете больше, чем разрывы строк, перейдите к preg_replace. В любом случае, подготовьте данные до взрыва.

+0

Хорошая идея, хотя эти данные могут быть в принципе ничего. Могло даже иметь 5 разрывов перед следующим словом. – Fizzix

+0

На самом деле, это может сработать хорошо, если я использую свой метод, но затем заменю разрывы строк пробелами, а затем снова использую мой метод. – Fizzix

+0

Закончился с использованием вашей логики для моего ответа, и я создал «preg_match», который заменяет любые строки. Для тех, кто хочет знать, как я его решил, я помещаю это в начало моего кода: '$ title = preg_replace ("/\ r \\ n/"," ", $ title);' – Fizzix

0

Попробуйте (непроверенный код):

//--- remove linefeeds 
$titleStripped = str_replace('\n', ' ', $title); 
//--- strip out multiple space caused by above line 
preg_replace('/ {2,}/g',$titleStripped); 
//--- make it an array 
$pieces = explode(' ', $titleStripped); 
//--- get the first 4 words 
$first_part = implode(" ", array_splice($pieces, 0, 4)); 
Смежные вопросы