I found many methods for intercepting Chinese Characters in php on the Internet. The most common method is to use the mb_substr function. This function requires php. expansion support in ini, but I have no permission to modify it.
Substr Interception
The substr () function returns part of the string.
| The Code is as follows: |
Copy code |
<? Php $ Rest = substr ("I am a Chinese",-1); // returns "garbled" Echo $ rest. '<br/> '; $ Rest = substr ("abcdef",-2); // returns "ef" Echo $ rest. '<br/> '; $ Rest = substr ("abcdef",-3, 1); // returns "d" Echo $ rest. '<br/> '; ?> |
Then Baidu goole says it can be intercepted by mb_substr.
| The Code is as follows: |
Copy code |
<? Php Echo mb_substr ('We are all good children he ); ?>
|
Running Mechanism prompt
Fatal error: Call to undefined function mb_substr ()...
Later, a friend told me that php_mbstring.dll was not opened on a common server. You need to open php_mbstring.dll in php. ini and find another way to stop the idc provider.
| The Code is as follows: |
Copy code |
Function msubstr ($ str, $ start = 0, $ length, $ charset = "UTF-8", $ suffix = true) { If (function_exists ("mb_substr ")) Return mb_substr ($ str, $ start, $ length, $ charset ); Elseif (function_exists ('iconv _ substr ')){ Return iconv_substr ($ str, $ start, $ length, $ charset ); } $ Re ['utf-8'] = "/[x01-x7f] | [xc2-xdf] [x80-xbf] | [xe0-xef] [x80-xbf] {2} | [xf0-xff] [x80-xbf] {3 }/"; $ Re ['gb2312'] = "/[x01-x7f] | [xb0-xf7] [xa0-xfe]/"; $ Re ['gbk'] = "/[x01-x7f] | [x81-xfe] [x40-xfe]/"; $ Re ['big5'] = "/[x01-x7f] | [x81-xfe] ([x40-x7e] | xa1-xfe])/"; Preg_match_all ($ re [$ charset], $ str, $ match ); $ Slice = join ("", array_slice ($ match [0], $ start, $ length )); If ($ suffix) return $ slice ."... "; Return $ slice; } |
This solves all the problems. It seems that it is intercepted by character encoding.