Обрезать заговолок (длина титле)

#1 9 августа 2012 в 23:15
Как обрезать, если титл имеет такой вид в php
  1. ".[title]."
#2 10 августа 2012 в 07:48
Неясно само название массива.
В твоем примере только ключ массива.Как то так должно $title['title']
Пример если массив именован как $title:

Обрезка тайтла с целым словом в конце строки.

Обращаемся так:

  1. $delimiter = new String_Delimiter($title['title']);
  2. $title['title'])=$delimiter->limit (100, $title['title']);
  1. class String_Delimiter {
  2.  
  3. /*
  4. * @param integer $limite : Максимальное число символов
  5. * @param string $string: Строка
  6. *
  7. * @return string : Строка обрезанная в пределах максимум 64 символа-целое слово
  8. * $delimiter = new String_Delimiter();
  9. * echo $delimiter->limit(55," Тест строки. ");
  10. * Exemplo de uso:
  11. */
  12.  
  13. public function limit($limite = null, $string = null){
  14.  
  15.  
  16. $string = $novaString = $this->_fixString($string);
  17. $numCaracteres = $this->_countCaracteres($string);
  18.  
  19. if($numCaracteres > $limite){
  20. $novaString = $this->_fixString(substr($string, 0, $limite)); //Corta a string para caber no limite
  21. $novoNumPalavras = $this->_countWords($novaString);
  22.  
  23. $pedacosStringOriginal = explode(" ", $string);
  24. $tamUltimaPalavraCortada = strlen(end(explode(" ", $novaString)));
  25. $tamUltimaPalavraOriginal = strlen($pedacosStringOriginal[$novoNumPalavras-1]);
  26.  
  27. if($tamUltimaPalavraCortada < $tamUltimaPalavraOriginal){
  28. // Elimina a ъltima palavra se ela estiver imcompleta
  29. $novaString = explode(" ", $novaString);
  30. array_pop($novaString);
  31. $novaString = implode(" ",$novaString);
  32. }
  33. }//end if
  34.  
  35. return $novaString;
  36.  
  37. }
  38.  
  39. private function _countWords($string){
  40. return count(explode(" ", $string));
  41. }
  42.  
  43. private function _countCaracteres($string){
  44. return strlen($string);
  45. }
  46.  
  47. private function _fixString($string){
  48. return trim(preg_replace('/ +/', " ", $string)); // Elimina os espaзos duplos "em branco" e espaзos no inнcio e fim da string
  49. }
  50. }//end class
#3 10 августа 2012 в 08:30
А зачем обрезать в php? Можно в темплейте smarty использовать truncate.
#4 10 августа 2012 в 09:10


А зачем обрезать в php? Можно в темплейте smarty использовать truncate.

googlebot

можно, но это если передает в шаблон, а если не имеет шаблона??

Oll спасибо, попробую, а сам вид такой примерно

echo "<span style='color:#990000;'>".$content[title]."</span>";
#5 10 августа 2012 в 11:22
Может я неправильно понял что нужно, но если правильно, проще будет так:
  1. if(strlen($content['title'])> 100){
  2. $content['title'] = substr($content['title'], 0, 100) . '...';
  3. }
И после 100 символов будет "..."
#6 10 августа 2012 в 18:20
Правильно, то что проще. Но последнее слово в строке обрежется как угодно, используя вышепреведенный класс String_Delimiter, последнее слово в строке остается всегда целым.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.