我有以下代码替换页面上的所有标记,并将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'), '';
}
}
答案 0 :(得分: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找到合适的元素。
答案 1 :(得分:0)
我最后只使用纯CSS并添加了我不想调整大小的图像。将该div的宽度和高度强制回自动,然后删除它们上方显示的警告消息。似乎工作正常。谢谢你的帮助:)