公司丢来难题,要我给每一个特定的html元素填入页码。完整html结构如下(已简化文字段落并整理3组提供参考),
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<section>
<!-- 页码-->
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
<!-- 段落-->
<article class="fl1">
<div class="sm1"></div>
<div class="paragraph indent_2">
<span class="w500">早安 台湾</span>
</div>
</article>
<!-- 页码-->
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
<!-- 段落-->
<article class="fl1">
<div class="sm1"></div>
<div class="paragraph indent_2">
<span class="w500">早安 台北</span>
</div>
</article>
<!-- 页码-->
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
<!-- 段落-->
<article class="fl1">
<div class="sm1"></div>
<div class="paragraph indent_2">
<span class="w500">早安 高雄</span>
</div>
</article>
</section>
</body>
</html>
我要利用php快速处理这个主题。请各位先进看图
php抓取html档案全部的特定元素,例如有1253组,通通填上页码之后,将新且完整的html输出到萤幕并且存档。请教这怎么做,感恩了
2 个回答
2
froce
iT邦大师 1 级 ‧ 2024-11-13 09:43:18
最佳解答
在页面加段JS不就好了,应该不用跨档案去处理吧?
const elms = document.querySelectorAll(".fl1")
Array.from(elms).map((e, i)=>{
e.setAttribute("name", i+1)
e.querySelector("div").innerText = `${i+1}页`
})
-
1 -
-
rosef35
iT邦新手 4 级 ‧
2024-11-13 11:55:33
的确,我决定改以js处理,然后在ajax给后台
修改
2
㊣浩瀚星空㊣
iT邦大神 1 级 ‧ 2024-11-13 09:51:55
首先,个人并不太建议用PHP来直接整理输出html码。
最好还是利用一下 js 处理。
但如果情况不允许非得用PHP来输出 html 码的情况下。
一般来说,我会建议使用正则来区分取代
以下程式给你参考(我没试验过,自已试试看)
<?php
$html = \'
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
<a class="fl1 page" name="" href="#">
<div style="color: gray;"></div>
</a>
\'; //这裏是您的html码。
// 使用 preg_replace_callback() 来处理每个匹配的 <a> 标籤
$count = 1;
$html = preg_replace_callback(
\'/<a\\s+class="fl1\\s+page"\\s+name=""\\s+href="#">\\s*<div\\s+style="color:\\s*gray;">\\s*<\\/div>\\s*<\\/a>/\',
function($matches) use (&$count) {
// 在每个匹配项中,按顺序替换 name 属性和 div 内容
$new_a = \'<a class="fl1 page" name="p\' . $count . \'" href="#">\' .
\'<div style="color: gray;">\' . $count . \'页</div>\' .
\'</a>\';
$count++;
return $new_a;
},
$html
);
echo $html;
?>
-
1 -
-
rosef35
iT邦新手 4 级 ‧
2024-11-13 11:55:53
的确,我决定改以js处理,然后在ajax给后台
修改