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