0
我正在尋找一種方式來改造這個:更換HTML標記的HREF
...<a href="showinfo:3875//[integer]">[inner content]</a>...
進入這個:
...<a href="http://somelink.com/[inner content]">[inner content]</a>...
的情況下有多個鏈接與其他showinfo:整數]值。 (我可以處理這些的)
感謝您的幫助, 巴林特
編輯:多虧了凱撒的答案,這裏是工作的代碼片段:
$html = $a;
$dom = new \DOMDocument;
@$dom->loadHTML($html); //Cannot guarantee all-valid input
foreach ($dom->getElementsByTagName('a') as $tag) {
// Fixed strstr order and added a != false check - the, because the string started with the substring
if ($tag->hasAttribute('href') && strstr($tag->getAttribute('href'), 'showinfo:3875') != false) {
$tag->setAttribute('href', "http://somelink.com/{$tag->textContent}");
// Assign the Converted HTML, prevents failing when saving
$html = $tag;
}
}
return $dom->saveHTML($dom);
}
謝謝 - 效果很好! – molbal
編輯:在問題中添加最終解決方案 – molbal
@molbal關於您編輯的問題的一些註釋:您可能想使用'stristr()'(請參閱編輯答案)。你也不需要檢查'!= false'。忽略它是一樣的。但是,如果你這樣做,至少用'!=='做一個類型安全檢查。如果你**得到警告**,那麼請按照[這個答案](http://stackoverflow.com/questions/1148928/disable-warnings-when-loading-non-well-formed-html-by-domdocument-php/17559716#17559716)查看如何禁止警告。或者只是_fix_你的HTML,如果你在控制它:) – kaiser