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

テストされていないコードは次のとおりです。

$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 に答える
0

結局、純粋なCSSを使用し、サイズを変更したくない画像の周りに追加しました。そのdivの幅と高さを強制的に自動に戻し、その上に表示されていた警告メッセージを削除しました。正常に動作しているようです。ご協力いただきありがとうございます :)

于 2012-08-19T12:10:54.213 に答える