2012-11-03 2 views
1

Мне нужно получить подстроку из строки, где она будет выводить первые 25 символов из разных сторон. Здесь подстрока должна рассматривать только запятые (,) не пробелы.Получение подстроки строки из разных сторон

Сценарий 1:

$str = "the, quick, brown, fox"; 

$res = "the, quick, brown, fox"; 

Сценарий 2:

$str = "the, quick, brown, fox, jumps, over, the, lazy, dog!"; 

$res = "the, quick, brown, fox, more"; 

Сценарий 3:

$str = "the quick, brown fox, jumps over, the lazy dog!"; 

$res = "the quick, brown fox, more"; 

Сценарий 4:

$str = "the quick brown fox, jumps over, the lazy dog!"; 

$res = "the quick brown fox, more"; 

Пожалуйста, помогите! Благодарю.

Чрезвычайно жаль мой английский!

+0

Здесь, в сценарии 2, 3, 4, что означает больше ... и я думаю, вы хотите получить результат подстроки, в которой первые 25 символов (исключая пробел). Пожалуйста, ответьте –

+0

вот своего рода заголовок полной новости, где он обрезает строку на 25 символов и заменяет ее «больше», если ее больше 25 символов. Он будет искать только «,» до 25 символов. Посмотрите на сценарий 4, где предполагается показать «быстрый коричневый, прыжок с лисицей», но поскольку в нем нет «,», в конце он получит подстроку вверх до предыдущего », и вернет« быструю коричневую лисицу », более« – SpritsDracula

+0

и я не знаю, кто это, спасибо за вашу отрицательную репутацию.Здесь мы полагаем, чтобы помочь людям и, конечно же, иметь силу отрицательной репутации, но только с некоторой достоверной причиной. Пожалуйста, сначала объясните причину, а затем обратитесь за отрицательной обратной связью. – SpritsDracula

ответ

1

Все 4 Сценариев испытанных

(при условии, что запятая находится в пределах первых 25 символов)

function stringm($string, $length = 25){ 

    if(strlen($string) >= $length){ 
     $string = substr($string, 0, $length-1); 
     $str_array = explode(",", $string); 
     // add logics here to check array len if comma may not be within the first 25 characters 
     array_pop($str_array); 
     $string = implode(",", $str_array) . ', more'; 
    } 

    return $string; 
} 


echo stringm('the, quick, brown, fox') . '<br>'; 
echo stringm('the, quick, brown, fox, jumps, over, the, lazy, dog!') . '<br>'; 
echo stringm('the quick, brown fox, jumps over, the lazy dog!') . '<br>'; 
echo stringm('the quick brown fox, jumps over, the lazy dog!') . '<br>'; 

, быстрая, коричневая, лисица

, быстрая, коричневая, лисица , больше

быстрая, коричневая лисица, больше

быстрая коричневая лиса, больше

+0

Спасибо за ваш ответ, но попробуйте изменить значение 15 вместо 25. Его не дает правильный вывод. А что, если 25-й символ - это запятая? Он должен добавить «больше» вместо «, больше», чтобы не было двойных запятых. – SpritsDracula

+0

Попробуйте мой новый код сейчас .. если он не работает, предоставьте мне в качестве тестового примера –

+0

Хорошая работа! как мой код, так и ваш код возвращают тот же ответ. Спасибо, брату за помощь: D – SpritsDracula

0

Ну, я только что разобрался в решении. Я не уверен в возможности, но он отлично работает для меня.

Метод:

function excerpt($string, $length = 25) { 
$new_string = $string; 

if(strlen($string) >= $length) { 
    $new_string = ""; 
    $array = explode(',', $string); 
    $current = 0; 
    for($i = 0; $i < count($array); $i++) { 
     $current+= strlen($array[$i])+1; 
     if($current <= $length) 
      $new_string.= $array[$i].","; 
     else { 
      $new_string.= " more"; 
      $i = count($array); 
     } 
    }  
} 
return $new_string; 

}

Входной сигнал:

echo excerpt('the, quick, brown, fox').'<br>'; 
echo excerpt('the, quick, brown, fox, jumps, over, the, lazy, dog!').'<br>'; 
echo excerpt('the quick, brown fox, jumps over, the lazy dog!').'<br>'; 
echo excerpt('the quick brown, fox jumps over, the lazy dog!').'<br>'; 
echo excerpt('the quick brown fox, jum, ps, over, the lazy dog!').'<br>'; 

Выход:

the, quick, brown, fox 
the, quick, brown, fox, more 
the quick, brown fox, more 
the quick brown, more 
the quick brown fox, jum, more 

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

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