[英]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.