公司丢来难题,要我给每一个特定的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给后台

修改