使用PHP分解UTF-8文本中的长词

时间:2012-06-26 21:27:36

标签: php

可怕的头衔,我知道。

我想要一些wordwrap,但显然不能使用wordwrap(),因为它弄乱了UTF-8 ..更不用说标记了。

我的问题是我想摆脱像这样的东西“eeeeeeeeeeeeeeeeeeeeeeeeeeeeee”..但当然更长。一些笑话者发现把这些东西放在我的网站上很有趣。

所以,当我有一个像这样的字符串时“你好,你在做什么,怎么样?”我想用零宽度空格()字符打破'areeee'事物。

字符串并不总是相同的字母,字符串总是在较大的字符串中。所以str_len,substr,wordwrap都不适合描述。

谁能帮助我?

2 个答案:

答案 0 :(得分:1)

分3步完成

  1. 对字符串和空格进行拆分
  2. 对字符串
  3. 中的每个单词执行str_len / trim
  4. 将字符串连接在一起
  5. 这样做的缺点是,超过10个字符的单词也会被打破。所以我建议在这里添加一些东西,看看它是不是一遍又一遍的相同字母。

    示例

    $string = "Hello how areeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee you doing?";
    $strArr = explode(" ",$string);
    foreach($strArr as $word) {
    if(strlen($word) > 10) {
        $word = substr($word,0,10);
    }
    
    $wordArr[] = $word;
    }
    
    $newString = implode(" ",$wordArr);
    print $newString;  // Prints "Hello how areeeeeeee you doing?"
    

答案 1 :(得分:1)

说这是 PHP解决方案,如果您的问题是您的脚本视图,为什么不使用名为word-wrap的简单CSS3规则?

让您的容器为div id="example",您可以写:

#example
{
  word-wrap: break-word;
}