$str="是的范德萨第三方第三方水电费送达发送发斯蒂芬送达送达更好地规划获得更好地方获得更好水电费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分的官方说的跟是梵蒂冈富商大贾讽德诵功发的大概发给水电费是梵蒂冈是奋斗过水电费是第三个是是个地方官"实现:$str里所有h1标签内容长度超过20个字,进行追加h1标签。根据上文实现下面效果:$str="是的范德萨第三方第三方水电费送达发送发斯蒂芬送达送达更好地规划获得更好地方获得更好水电费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分费第三方都是范德萨范德萨范德萨水电费阿道夫告诉对方水电费电风扇分的官方说的跟是梵蒂冈富商大贾讽德诵功发的大概发给水电费是梵蒂冈是奋斗过水电费是第三个是是个地方官"求方法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
写了一个函数/***@paramstring$htmlhtml文本数据*@paramarray$rule处理的规则,['需要处理的标签'=>限制的字符数量]**/functionprocessing($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.="<{$data[1][$k]}>{$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中间那一段就行。