公司丟來難題,要我給每一個特定的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輸出到螢幕並且存檔。
請教這怎麼做,感恩了
在頁面加段JS不就好了,應該不用跨檔案去處理吧?
const elms = document.querySelectorAll(".fl1")
Array.from(elms).map((e, i)=>{
e.setAttribute("name", i+1)
e.querySelector("div").innerText = `${i+1}頁`
})
首先,個人並不太建議用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;
?>