0

我有一种情况,我认为我可能必须使用正则表达式来更改基于类属性的 html 标记内容或 src。

要记录我将解析的文件将是格式良好的 html、部分 html 或 php 文件。

EG 我需要用内部内容更改/填充这些标签:fileX.php

<?php
echo <<<_END
<div class="identifyingClass1"></div>
<div class="identifyingClass2"><span>holding content</span></div>
<img src='http://source.com/to/change' class='identifyingClass3' alt='descrip'/>
_END;

结果文件X.php

<?php
echo <<<_END
<div class="identifyingClass1">New content jsd soisvkbsdv</div>
<div class="identifyingClass2">More new content</div>
<img src='new/source.tiff' class='identifyingClass3' alt='descrip'/>
_END;

html可以是完整的,可以被php分隔,保持原样,在hereDOC中......

实现这一目标的最佳方法是仅使用正则表达式还是有人看到或使用过此类事情的类?

4

2 回答 2

2

对于这种情况,正则表达式是邪恶的。更好地处理生成的 html。这是你如何做到的。

启用输出缓冲。在ob_start函数上添加您自己的回调。在处理程序中使用DOMDocument处理生成的 html 。像这样的东西,

function my_handler($contents){
     $doc = DOMDocument::loadHTML ($contents);
     // change your document here and return it later
     return $doc->saveHTML();
}
ob_start('my_handler');
于 2012-11-13T22:37:35.960 回答
0

如前所述,不建议使用 RegEx 进行此类操作。看看这个出色的答案。我个人最喜欢的是SimleDom,它提供了类似 jQuery 的语法,让在 PHP 中使用 HTML 变得非常有趣;)。

于 2012-11-13T22:52:52.737 回答