當我使用substr()
我在最後PHP函數SUBSTR()錯誤
$articleText = substr($articleText,0,500);
得到一個奇怪的角色,我有500個字符的輸出和< -
我怎樣才能解決這個問題?這是一個編碼問題嗎?我的語言是希臘語。
當我使用substr()
我在最後PHP函數SUBSTR()錯誤
$articleText = substr($articleText,0,500);
得到一個奇怪的角色,我有500個字符的輸出和< -
我怎樣才能解決這個問題?這是一個編碼問題嗎?我的語言是希臘語。
substr
使用字節計數,而不是字符。
希臘語可能意味着您正在使用一些多字節編碼,如UTF-8 - 並且每個字節的計數對這些不太好。
每一天學習越來越多...謝謝你stackoverflow! – 2011-12-19 10:07:07
非常感謝。但就我而言,主要的是在使用'mb_ *'函數之前添加'mb_internal_encoding(「UTF-8」);''。沒有添加它,我仍然看到正方形。 – ivkremer 2013-12-27 15:46:25
@Kremchik如果你使用'mb_substr($ short,0,75,'utf-8')',你將看不到正方形。那麼你不需要在'mb_substr'之前使用'mb_internal_encoding'。 – trejder 2014-06-23 12:39:21
ms_substr()也適用很好地去除奇怪尾隨換行符爲好,這是我解析HTML代碼後遇到問題。
trim()
或:
var_dump(preg_match('/^\n|\n$/', $variable));
或:
str_replace (array('\r\n', '\n', '\r'), ' ', $text)
不要趕這個問題沒有被處理。
UTF-8編碼字符串的替代解決方案 - 這將在切割子字符串之前將UTF-8轉換爲字符。
$articleText = substr(utf8_decode($articleText),0,500);
爲了讓articleText字符串返回到UTF-8,將需要額外的操作:
$articleText = utf8_encode(substr(utf8_decode($articleText),0,500));
使用這個功能,它爲我
function substr_unicode($str, $s, $l = null) {
return join("", array_slice(
preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
}
請使用反向鏈接,c/p不正確回答問題。 – 2015-02-14 02:57:44
您試圖剪切unicode字符。所以我寧願代替substr()
在php中試用mb_substr()
。
SUBSTR()
substr (string $string , int $start [, int $length ])
mb_substr()
mb_substr (string $str , int $start [, int $length [, string $encoding ]])
爲SUBSTR()的詳細信息 - Credits => Check Here
有沒有看到(英國)英語同樣的事情。 – alimack 2014-08-25 11:03:32