一千萬個為什麽

搜索

如何替換插件的Div內容

我正在為Virtuemart編寫一個插件,它的System類型插件。在他們的舊版本(VM2.x)中,他們只使用類來管理 Div ,並且沒有內部 Div 結構,因此 preg_replace 足以滿足我的要求。但是在新版本中,他們更改了默認的Div結構,現在 Div 裏面的 Div 就在那裏。因此 preg_replace 無法替換整個 Div 內容。

我剛剛用 PHPDomXpath 來管理它,但是在我的插件啟用時返回錯誤的一些模板框架(T3)

"0 - String could not be parsed as XML"

相同的插件可以與 Gantry 和其他框架一起使用。 舊版本我嘗試了以下代碼,它在所有模板上都可以正常工作。

$buffer = preg_replace('<div class="ClassNeedstoReplace">([^`]*?)<\/div>/','my custom content',$buffer);    

Now in Vm3 I'm using following codes.

$docs = new DOMDocument();
libxml_use_internal_errors(true);
$docs->resolveExternals = true;
$docs->loadHTML($buffer);
if($getRelatedProduct != '')
$element = $docs->createElement('div', $getRelatedProduct);
$xpath = new DOMXPath($docs);
$query = '//div[@class="'.$class_name.'"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {

    $entry->parentNode->replaceChild($element, $entry);
}
$docs->recover = true;
libxml_clear_errors();
JResponse::setBody(htmlspecialchars_decode($docs->saveHTML()));

bcoz all the instance of the class needs to be replaced.

I know for testing the plugin required another Extension (VM3).its difficult for debuggers.But simply my requirement is simply replace all the class instance with mine.

is there any way to replace Div inside Div structure without breaking layouts using preg_replace ??

The Div Structure is

<div class="product-fields">
        <div class="product-field product-field-type-R">
                                    Related Products
                        Tooltip
                Test Product 1Custom prototype for related products            </div>
        </div>

I'm trying to replace "product-field product-field-type-R" it may comes more than one inside "product-fields"

Hope someone will be able to figure out something :)

最佳答案

可能的其他方案:

轉載註明原文: 如何替換插件的Div內容