我需要在dom元素中插入一個字符串,以便在simple_html_dom::__tostring
被調用時顯示,但它們不會影響simple_html_dom api。在簡單的html dom輸出上插入字符串
所以,如果我有一個simple_html_dom節點,在$node->outertext
如下:
<div class="MyClass">
<div itemprop="myVar">
</div>
</div>
然後,我要分配給$string='INSERTED STRING'
自動插入展出。輸出會是這樣:
<div class="MyClass">
INSERTED STRING
<div itemprop="myVar">
</div>
</div>
這樣的想法是,使用該simple_html_dom API元素進行交互時,它彷彿$string
未插入。然後當輸出html時,立即在打開(或關閉)標籤之後(或之前)插入$string
。
例如,$node->innertext = $string.$node->innertext
是不可接受的,因爲它會影響解析,因爲$node
在開始時會有一個新的孩子。
有沒有內置的方法來做到這一點?
如果沒有,是否有辦法在不編輯simple_html_dom
的源代碼的情況下完成它?
編輯:性能不是一個問題,因爲輸出將被緩存。
AND:我剛剛意識到我可以只做$node->setAttribute('insertOnDisplay',$string)
然後在顯示前再次抓取文檔,刪除屬性,並將屬性值放入內聯文本中。我會看看我是否有其他更好的選擇(並測試它),然後再發布它作爲答案。
我當我的實例子混淆爲什麼你不能在打印出html之前插入文本? – MasterOdin
如果它只是爲了輸出的目的,然後只是創建另一個變量,如果你想原始節點不變 – Ghost
我颳了一個文件,當滿足某些條件(說一個節點有一個特定的標籤或屬性),然後我將元素傳遞給其他函數作用於它們,比如添加一個'value'屬性或者......這些函數中的任何一個都可以添加不應該被'simple_html_dom'看到的文本(輸出時除外)。因此,任何一種方法都會增加顯着的複雜度,我認爲... – Jakar