Функция PHP wordwrap()
работает неправильно для многобайтовых строк, таких как UTF-8.
В комментариях есть несколько примеров безопасных функций mb, но с некоторыми разными тестовыми данными все они, похоже, имеют некоторые проблемы.
Функция должна принимать те же параметры, что и wordwrap()
.
В частности, убедитесь, что он работает для:
- вырезать середину слова, если
$cut = true
, иначе не вырезать середину слова - не вставлять лишние пробелы в слова, если
$break = ' '
- также работаю на
$break = "\n"
- работать для ASCII и всех допустимых UTF-8
s($str)->truncate($length, $break)
и < a href="https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L246" rel="nofollow noreferrer">s($str)->truncateSafely($length, $break)
сделать именно это, как найдено в этой отдельной библиотеке. Первый для$cut = true
, а второй для$cut = false
. Они безопасны для Юникода. - person caw   schedule 27.07.2016