discuz截取函数

本文介绍了一个用于PHP的自定义字符串截取函数cutstr()的实现细节。该函数能够根据指定长度截取UTF-8编码的字符串,并考虑了特殊字符的处理。此外,还提供了一个用于转义字符串的辅助函数daddslashes()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
字符串截取函数

$cutstr = cutstr('截取我,hahahahahaaha','3');



function cutstr($string, $length, $dot = ' ...') {
global $charset;

if(strlen($string<= $length) {
return $string;
}

$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);

$strcut = '';
if(strtolower($charset== 'utf-8') {

$n = $tn = $noc = 0;
while($n < strlen($string)) {

$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1$n++$noc++;
elseif(194 <= $t && $t <= 223) {
$tn = 2$n += 2$noc += 2;
elseif(224 <= $t && $t < 239) {
$tn = 3$n += 3$noc += 2;
elseif(240 <= $t && $t <= 247) {
$tn = 4$n += 4$noc += 2;
elseif(248 <= $t && $t <= 251) {
$tn = 5$n += 5$noc += 2;
elseif($t == 252 || $t == 253) {
$tn = 6$n += 6$noc += 2;
else {
$n++;
}

if($noc >= $length) {
break;
}

}
if($noc > $length) {
$n -= $tn;
}

$strcut = substr($string, 0, $n);

else {
for($i = 0$i < $length - strlen($dot- 1$i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i: $string[$i];
}
}

$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);

return $strcut.$dot;
}
function daddslashes($string, $force = 0) {
!defined('MAGIC_QUOTES_GPC'&& define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key= daddslashes($val, $force);
}
else {
$string = addslashes($string);
}
}
return $string;
}
?>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值