Убедитесь, что PHP substr заканчивается словом, а не символом

Я знаю, как использовать функцию substr, но это будет счастливой конец строки наполовину через слово. Я хочу, чтобы строка заканчивалась в конце слова, как я буду делать это? Будет ли это включать регулярное выражение? Любая помощь очень ценится.

Это то, что у меня есть до сих пор. Только SubStr …

echo substr("$body",0,260); 

ура

Это можно сделать с помощью регулярного выражения, что-то вроде этого получит до 260 символов от начала строки до границы слова:

 $line=$body; if (preg_match('/^.{1,260}\b/s', $body, $match)) { $line=$match[0]; } 

В качестве альтернативы вы можете использовать функцию wordwrap, чтобы разбить ваше тело на строки, а затем просто извлечь первую строку.

 substr($body, 0, strpos($body, ' ', 260)) 

Вы можете попробовать следующее:

  $s = substr($string, 0, 261); $result = substr($s, 0, strrpos($s, ' ')); 

Вы можете сделать это: найдите первое место из 260-го символа и используйте его как метку обрезки:

 $pos = strpos($body, ' ', 260); if ($pos !== false) { echo substr($body, 0, $pos); } 

wordwrap и explode, тогда первый элемент массива – вы хотите $wr=wordwrap($text,20,':'); $strs=explode(":",$wr); $strs[0] $wr=wordwrap($text,20,':'); $strs=explode(":",$wr); $strs[0]

 $pos = strpos($body, $wordfind); echo substr($body,0, (($pos)?$pos:260)); 

Я использую это решение:

 $maxlength = 50; substr($name, 0, ($spos = strpos($name, ' ', $lcount = count($name) > $maxlength ? $lcount : $maxlength)) ? $spos : $lcount ); 

Или встроенный:

 substr($name, 0, ($spos = strpos($name, ' ', $lcount = count($name) > 50 ? $lcount : 50)) ? $spos : $lcount ); 
 function substr_word($body,$maxlength){ if (strlen($body)<$maxlength) return $body; $body = substr($body, 0, $maxlength); $rpos = strrpos($body,' '); if ($rpos>0) $body = substr($body, 0, $rpos); return $body; } 

Попробуйте эту функцию.

 <?php /** * trims text to a space then adds ellipses if desired * @param string $input text to trim * @param int $length in characters to trim to * @param bool $ellipses if ellipses (...) are to be added * @param bool $strip_html if html tags are to be stripped * @param bool $strip_style if css style are to be stripped * @return string */ function trim_text($input, $length, $ellipses = true, $strip_tag = true,$strip_style = true) { //strip tags, if desired if ($strip_tag) { $input = strip_tags($input); } //strip tags, if desired if ($strip_style) { $input = preg_replace('/(<[^>]+) style=".*?"/i', '$1',$input); } if($length=='full') { $trimmed_text=$input; } else { //no need to trim, already shorter than trim length if (strlen($input) <= $length) { return $input; } //find last space within length $last_space = strrpos(substr($input, 0, $length), ' '); $trimmed_text = substr($input, 0, $last_space); //add ellipses (...) if ($ellipses) { $trimmed_text .= '...'; } } return $trimmed_text; } ?> 
 public function Strip_text($data, $size, $lastString = ""){ $data = strip_tags($data); if(mb_strlen($data, 'utf-8') > $size){ $result = mb_substr($data,0,mb_strpos($data,' ',$size,'utf-8'),'utf-8'); if(mb_strlen($result, 'utf-8') <= 0){ $result = mb_substr($data,0,$size,'utf-8'); $result = mb_substr($result, 0, mb_strrpos($result, ' ','utf-8'),'utf-8');; } if(strlen($lastString) > 0) { $result .= $lastString; } }else{ $result = $data; } return $result; } 

Передайте строку в funtion Strip_text («Длинный текст с тегом html или без тега html», 15). Затем эта функция вернет первые 15 символов из строки html без тэгов html. Если строка меньше 15 символов, то верните полную строку другой мудрый, она вернет символ 15 с строкой параметра $ lastString.

Пример:

 Strip_text("<p>vijayDhanasekaran</p>", 5) 

Результат: Виджей

 Strip_text("<h1>vijayDhanasekaran<h1>",5,"***....") 

Результат: vijay *** ….