Я пытаюсь написать свою первую пользовательскую функцию. Я понимаю, что есть и другие функции, которые делают то же самое, что и это, но эта моя. Я написал функцию, но я не понимаю char_list, поскольку он относится к функциям и не может определить третий параметр функция str_word_count в php. Я думаю, что мне нужно это в определенном формате, чтобы поддерживать точки, запятую, точку с запятой, двоеточие и т. Д. Обратите внимание, что двойные и одинарные кавычки поддерживаются на протяжении всей функции. Это нижние символы, которые отделяются от строки.
$text = "Lorem ipsum' dolor sit amet, consectetur; adipiscing elit. Mauris in diam vitae ex imperdiet fermentum vitae ac orci. In malesuada."
function textTrim($text, $count){
$originalTxtArry = str_word_count($text, 1);
$shortenTxtArray = str_word_count(substr(text, 0,$count), 1);
foreach ($shortenTxtArray as $i=>$val) {
if ($originalTxtArry[$i] != $val) {
unset($shortenTxtArray[$i]);
}
}
$shortenTxt = implode(" ", $shortenTxtArray)."...";
return $shortenTxt;
}
Выход
Lorem Ipsum ‘Dolor Sit Amet Concetetur Adipiscing Elit Mauris в диаметре …
Обратите внимание на «,» после того, как амет отсутствует.
Проигнорируйте строку периодов в конце, я соединяю их до конца перед возвращением
Спасибо за всю помощь.
Дейв
Обновлена функция взрыва на основе пространства
function textTrim($str, $limit){
/** remove consecutive spaces and replace with one **/
$str = preg_replace('/\s+/', ' ', $str);
/** explode on a space **/
$words = explode(' ', $str);
/** check to see if there are more words than the limit **/
if (sizeOf($words) > $limit) {
/** more words, then only return on the limit and add 3 dots **/
$shortenTxt = implode(' ', array_slice($words, 0, $limit)) . '...';
} else {
/** less than the limit, just return the whole thing back **/
$shortenTxt = implode(' ', $words);
}
return $shortenTxt;
}
Из руководства по PHP о третьем параметре charlist:
Список дополнительных символов, которые будут рассматриваться как «слово»
Это любые символы за пределами обычного a-z, которые должны быть включены как часть слова и не приводить к разрыву слова.
Если вы посмотрите на пример 1 в руководстве по PHP, с которым вы связались, он покажет пример, где слово «fri3nd» классифицируется только как 1 слово, когда 3 включено в параметр charlist.