php - เพิ่ม ID แต่ละรายการให้กับ h2 ทุกครั้งใน var
ฉันมี $text สตริงที่มี html ที่จัดรูปแบบไว้ข้างใน:
<h2>heading 1</h2>
<p>something</p>
<h2>heading 2</h2>
<p>something</p>
<h2>heading 3</h2>
<p>something</p>
ฉันต้องการ เพื่อเพิ่ม id แต่ละรายการให้กับทุกหัวเรื่อง h2:
<h2 id="1">heading 1</h2>
<p>something</p>
<h2 id="2">heading 2</h2>
ฯลฯ
ฉันจะทำสิ่งนี้โดยอัตโนมัติใน PHP ได้อย่างไร ฉันคิดว่าฉันต้องวนซ้ำแล้วบวก $i ฉันลอง str_replace แล้ว แต่ฉันคิดว่ามันไม่ใช่แนวทางที่ถูกต้อง!
$text = str_replace("<h2>", \'<h2 id=\\"$i\\">\', $text);
ใดๆ คำใบ้? ขอบคุณ!
Answer
วิธีแก้ปัญหา:
วิธีแก้ปัญหานี้จะใช้ strpos
เพื่อวนรอบการจับคู่ทั้งหมดและ preg_replace
เนื่องจาก อนุญาตให้เราจำกัดจำนวนการแทนที่ :
public function setTagsId(String $string)
{
$i = 0;
while (strpos( $string, \'\') !== เท็จ)
{
$string = preg_replace(\'//\', \'\', $string, 1);
}
return $string;
}
$string = "หัวข้อ 1
บางสิ่งบางอย่าง
หัวเรื่อง 2
บางอย่าง
หัวเรื่อง 3
บางอย่าง
";
echo setTagsId($string);
Source