【发布时间】:2017-04-19 15:33:59
【问题描述】:
我的 Php 截断函数有问题...
我的代码是这样的:
// truncate long word
$textArray = explode ( " ", $text );
$DEBUG = 1;
if ($DEBUG == 1) {
print_r("// truncate long word");
print_r($textArray);
print_r("// END truncate long word");
print_r("<br>");
}
foreach ( $textArray as $key => $word ) {
if (mb_strlen ($word) > $wordsLenght) {
$truncatedWord = mb_substr ($word, 0, $wordsLenght);
$textArray [$key] = $truncatedWord . "[...]";
}
}
例如,假设输入字符串是“cia???☺☻♥♀♂☼•◘○♠♣xas?????!!!!----”(不带引号)这个我的结果是否打印为 print_r:
// truncate long wordArray
(
[0] => cia???☺☻♥♀♂☼•◘○♠♣xas?????!!!!----
)
// END truncate long word
Result ($textArray)
(
[0] => cia???☺☻♥♀��[...]
)
如您所见,字符串终止不正确,可能是由什么引起的?
【问题讨论】:
-
请看这个刚刚拍摄的屏幕截图! i.imgur.com/GAZaNCN.png ..如您所见,结果与您发布的不一样..为什么? :(
-
您的
$wordsLenght值是多少,mb_internal_encoding返回的值是多少?您保存php文件时使用了哪种编码,在浏览器上阅读时使用的是哪种编码? -
现在我把 "mb_internal_encoding("UTF-8");"前截断操作(在第一个 foreach cicle 中)和提供的字符串完美返回!但是如果我在末尾使用法语/西班牙语字符(最后一个数组键)我看不到“[...]”...尝试使用这个字符串“sÀà, Ââ, Ææssdsasddssdsasasa”...我得到i.imgur.com/NUQCvH4.png
-
你没有回答我之前的问题,直到你回答我才能帮助你更多