中文超过一定长度替换 php,PHP 正则匹配标签内容,根据字符串长度进行替换

写了一个函数

/**

* @param string $html html文本数据

* @param array $rule 处理的规则, [ '需要处理的标签' => 限制的字符数量 ]

*

*/

function processing($html, $rule){

$outHtml = "";

$pattern = '/]+)>(.*)]+)>/U'; // 0为带标签的数据 1前标签 2为不带标签的文本内容 3后标签

preg_match_all($pattern, $html, $data);

foreach($data[3] as $k => $v){

if(isset($rule[$v])){

$len = mb_strlen($data[2][$k], 'utf8');

if($len > $rule[$v]){

$start = 0;

$end = $len;

do{

$subText = mb_substr($data[2][$k], $start, $rule[$v], 'UTF-8');

$outHtml .= "{$subText}{$data[3][$k]}>";

$len -= $rule[$v];

$start += $rule[$v];

if($len<0) {

$len = 0;

$start = $end;

}

}while($len);

continue;

}

}

$outHtml .= $data[0][$k];

}

return $outHtml;

}

使用

$html = '

是的范德萨第三方第三方水电费送达发送发斯蒂芬送达送达

这是H1更好地规划获得更好地方获得更好

水电费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分

这是一段测试,此处是需要处理的一段标题数据!字符超过指定字数会对这段进行处理,数据数据数据数据数据数据

这是一另段测试,这里是H2的数据,数据

奋斗过水电费是第三个是是个地方官

';

$out = processing($html, ['h1' => 20, 'h2' => 10]);

var_dump($out);

规则中符合规定的h1、h2会进行替换,变成带相同标签的多行,并且带了标签的class等属性。这样就可以随意设置要替换的标签和长度了。

不用带的话会更好处理,改一改do中间那一段就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值