Are there any potential pitfalls to be aware of when using wordwrap in PHP?

One potential pitfall when using wordwrap in PHP is that it may not correctly handle multi-byte characters, leading to unexpected results or broken text. To solve this issue, you can use the mb_strwidth function to calculate the width of multi-byte characters before using wordwrap.

$text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. 你好世界";
$width = 40;

function mb_wordwrap($text, $width) {
    $result = '';
    $lines = explode("\n", $text);
    
    foreach ($lines as $line) {
        $chunks = mb_str_split($line, $width);
        $result .= implode("\n", $chunks) . "\n";
    }

    return $result;
}

function mb_str_split($string, $split_length = 1) {
    $split_length = ($split_length <= 0) ? 1 : $split_length;
    $result = preg_split('/(?<!^)(?!$)/u', $string);
    
    if ($split_length > 1) {
        $chunks = array_chunk($result, $split_length);
        $result = array_map('implode', $chunks);
    }

    return $result;
}

echo mb_wordwrap($text, $width);