代码如下:
<code><span>/**
*<span> @param</span> $string
*<span> @param</span> $from 从0开始……
*<span> @param</span> null $length
*<span> @return</span> string
* c_substr("给我一点", $from=0, 9)>>给我一
* c_substr("给我一点", $from=1, 9)>>我一
* c_substr("给我一点", $from=2, 9)>>我一
* c_substr("给我一点", $from=3, 9)>>我一点
*/</span><span>private</span><span><span>function</span><span>c_substr</span><span>(<span>$string</span>, <span>$from</span>=<span>0</span>, <span>$length</span> = null)</span>{</span><span>//必填字段校验</span><span>if</span>(!<span>isset</span>(<span>$string</span>)||!<span>isset</span>(<span>$from</span>)||<span>$from</span><<span>0</span>){
<span>return</span><span>''</span>;
}
<span>//获得字符串长度</span><span>$strLen</span> = strlen(<span>$string</span>);
<span>//如果没有设置长度则把长度设置为字符串</span><span>if</span>(<span>$length</span> == <span>null</span>){
<span>$length</span> = <span>$strLen</span>;
}
<span>//判断字符串长度是否小于等于$length,是则直接返回字符串</span><span>if</span>(<span>$from</span> == <span>0</span>&&<span>$length</span> >= <span>$strLen</span>){
<span>return</span><span>$string</span>;
}
<span>$subLen</span> = <span>$length</span> + <span>$from</span>;
<span>$rtnStr</span> = <span>""</span>;
<span>//开始截取字符串</span><span>//为了能够截取完整,需要从头开始遍历</span><span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$subLen</span>&&<span>$i</span><<span>$strLen</span>;<span>$i</span>++){
<span>//判断是否为中文 如果是则在不超长的情况下往后再截2个字节</span><span>if</span>(ord(<span>$string</span>[<span>$i</span>])><span>0xa0</span>){
<span>if</span>(<span>$i</span>+<span>2</span><<span>$subLen</span>&&<span>$i</span>+<span>2</span><<span>$strLen</span>){
<span>$rtnStr</span> .= <span>$string</span>[<span>$i</span>].<span>$string</span>[<span>$i</span>+<span>1</span>].<span>$string</span>[<span>$i</span>+<span>2</span>];
<span>/**
* 如 “给我一点”
* 从位置0截取9个字节,则只获取“给我一”
* 从位置1截取9个字节,则只获取“我一”
* 从位置2截取9个字节,则只获取“我一”
* 从位置3截取9个字节,则只获取“我一点”
* 下面的if是为了跳过开头不完整的字符
*/</span><span>if</span>(<span>$i</span><<span>$from</span>){
<span>$rtnStr</span> = <span>""</span>;
}
<span>$i</span> += <span>2</span>;
}
<span>else</span>{
<span>return</span><span>$rtnStr</span>;
}
}
<span>//英文</span><span>else</span>{
<span>$rtnStr</span> .= <span>$string</span>[<span>$i</span>];
}
}
<span>return</span><span>$rtnStr</span>;
}</code>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号