我的网站上有一个表格。我正在审核ui面板上的表单值。如果单词长度大于12,则函数会执行此操作,它会在其旁边放置一个空格。但是,当我打印该值时,如果值是utf8,则会出错。
$text= 'üğqwoweğofkeiasş övafevpğeüqrg qğekqrğofteölzfs';
function parser($str, $parse) {
$strlength = strlen($str);
$counter = 0;
$query = '';
if($strlength > $parse) {
for($i = 0; $i < $strlength; $i++) {
if($str[$i] != ' ') {
$counter++;
}
if($counter == $parse) {
$query.=$str[$i];
$query.=' ';
$counter = 0;
}
if($counter != $parse) {
$query.=$str[$i];
}
if($counter != $parse & $str[$i] == ' ') {
$counter = 0;
}
}
return $query;
}
else {
return $str;
}
}
echo parser($text,12);
输出为:
'üğqwoweğo ofkeiasş övafevpğe� üqrg qğekqrğoft teölzfs'
有时并非总是如此。我不明白为什么会这样。
答案 0 :(得分:1)
代码:
function parser($string, $max_length = 12)
{
$chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
$i = 0;
foreach ($chars as $index => $char)
{
if ($char === ' ') { $i = 0; }
else { $i++; }
if ($i >= $max_length)
{
$chars[$index] = $char . ' ';
$i = 0;
}
}
return implode('', $chars);
}
$result = parser('üğqwoweğofkeiasş övafevpğeüqrg qğekqrğofteölzfs');
结果:üğqwoweğofke iasş övafevpğeüqr g qğekqrğofteö lzfsuser