簡體   English   中英

PHP將ID屬性添加到標題

[英]PHP Adding ID Attribute to Headings

我正在嘗試解析頁面的HTML標頭並添加ID以匹配內容。 我已經設法通過查找和替換來做到這一點,但是當存在任何其他HTML屬性時,它就會失敗...

這是要更改的標頭數組中的內容

[
    'find' => sprintf('<h%u>%s</h%u>', $level, $title, $level),
    'replace' => sprintf('<h%u id="%s">%s</h%u>', $level, slugify($title), $title, $level),
    'slug' => slugify($title)
]

稍后替換完成...

foreach ($parsed_content as $fix) {
    $content = str_replace($fix['find'], $fix['replace'], $content);
}

我知道這不是最好的方法,但這只是一個測試,現在要使其正常運行,我想我只需要使用正則表達式而不是標准的str_replace調用即可。

我正在使用DOMDocument,也許在那里有替代方法嗎?

編輯:我正在嘗試使用xpath來處理html。 我有一個簡單的循環來獲取數據,但是我不確定如何將代碼應用於實際文檔。 有任何想法嗎? 這是我的atm

$dom = new DOMDocument;
$dom->loadHTML($the_dom);
$xpath = new DOMXPath($dom);

$elements = $xpath->query('(//h1|//h2|//h3|//h4|//h5)');

foreach ($elements as $index => $element) {

    $element->setAttribute('id', sanitize_title($element->textContent));
    pr($element);

}

我的建議是使用JS完成此操作。

首先,使用PHP變量的值設置JS變量:

var level = <?= $level ?>; // inject PHP into JS
var title = <?= $title ?>;

然后,使用JS(或jQuery)替換內容:

$("h" + level).text(title);

我認為從客戶端操作DOM的這種方法比從服務器端語言使用regex容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM