1

我有以下代码替换页面上的所有标签并将 nCode 图像大小调整器添加到其中。代码如下:

function ncode_the_content($content) {
return preg_replace("/<img([^`|>]*)>/im", "<img onload=\"NcodeImageResizer.createOn(this);\"$1>", $content); }

}

我需要做的是,如果图像具有“noresize”类,则它不会执行 preg_match。

我只是设法得到它,这样如果页面上的任何地方都有“noresize”类,它就会停止调整所有图像的大小,而不仅仅是具有正确类的图像。

有什么建议么?

更新:

我什至在这个正确的球场上遥遥无期?

function ncode_the_content($content) {

//Load the HTML page
$html = file_get_contents($content);
//Parse it. Here we use loadHTML as a static method
//to parse the HTML and create the DOM object in one go.
@$dom = DOMDocument::loadHTML($html);

//Init the XPath object
$xpath = new DOMXpath($dom);

//Query the DOM
$linksnoresize = $xpath->query( 'img[@class = "noresize"]' );
$links = $xpath->query( 'img[]' );

//Display the results as in the previous example
foreach($links as $link){
echo $link->getAttribute('onload'), 'NcodeImageResizer.createOn(this);';
}

foreach($linksnoresize as $link){
echo $link->getAttribute('onload'), '';
}
  }
4

2 回答 2

0

我最终只使用了纯 CSS 并在我不想调整大小的图像周围添加了一个。将该 div 的宽度和高度强制恢复为自动,然后删除显示在它们上方的警告消息。似乎工作正常。谢谢你的帮助 :)

于 2012-08-19T12:10:54.213 回答
0

这是一些未经测试的代码:

$dom = DOMDocument::loadHTML($content);
$images = $dom->getElementsByTagName("img");
foreach ($images as $image) {
    if (!strstr($image->getAttribute("class"), "noresize")) {
        $image->setAttribute("onload", "NcodeImageResizer.createOn(this);");
    }
}

但是,如果是我,我会避开任何这样的内联事件处理程序,而只是使用 Javascript 找到适当的元素。

于 2012-08-19T01:06:22.493 回答