猿问

有没有人遇到过这个问题哈!PHP 正则匹配标签内容,根据字符串长度进行替换

$str="

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

更好地规划获得更好地方获得更好

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

的官方说的跟是梵蒂冈富商大贾讽德诵功发的大概发给水电费是梵蒂冈是

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

"
实现:
$str里所有h1标签内容长度超过20个字,进行追加h1标签。根据上文实现下面效果:
$str="

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

更好地规划获得更好地方获得更好

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

的官方说的跟是梵蒂冈富商大贾讽德诵功发的

大概发给水电费是梵蒂冈是

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

"求方法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ibeautiful
浏览 505回答 2
2回答

慕沐林林

写了一个函数/***@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.="{$subText}";$len-=$rule[$v];$start+=$rule[$v];if($len20,'h2'=>10]);var_dump($out);规则中符合规定的h1、h2会进行替换,变成带相同标签的多行,并且带了标签的class等属性。这样就可以随意设置要替换的标签和长度了。不用带的话会更好处理,改一改do中间那一段就行。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答