6

これが私の状況であり、問​​題を解決するために私が思いついた解決策です。ユーザーが公開用の HTML コンテンツを作成できるように、TinyMCE を含むアプリケーションを作成しました。ユーザーは、マークアップに画像を含め、それらの画像をドラッグ/サイズ変更して、IMG タグの最終的な幅/高さ属性に影響を与えることができます。これはすべて素晴らしいことです。ユーザーは画像を含めて、目的の外観にサイズ変更/再配置できます。しかし、大きな問題の 1 つは、(おそらく) はるかに大きな画像をクライアントに送信し、ブラウザで画像のサイズを要求された幅/高さ属性に変更することだけです。そのすべての帯域幅と失われた読み込み時間....

したがって、私の解決策は、ユーザーのマークアップ コンテンツを前処理し、すべての IMG タグをスキャンして、Height/Width/Src 属性を解析することです。次に、各画像の SRC タグを phpThumb リクエストに設定し、解析された高さ/幅をサムネイル URL に渡します。これにより、縮小サイズのイメージが作成されます (CPU とキャッシュを犠牲にして帯域幅を最適化します)。このソリューションについてどう思いますか? 人々が mod_rewrite を使用して同様のことを行っている他の投稿を見てきましたが、ページ サービスのコンテンツに影響を与え、受信した画像リクエストを操作したくありません。.... このデザインについて何か考えはありますか?

正規表現のスキルには多少の作業が必要なため、詳細については助けが必要ですが、時間が非常に少なく、技術的な知識の負債をすぐに支払うことを約束しています。正規表現を簡単にするために、いくつかのことを確信できます。この処理が必要な img タグのみが、既存の width="" height="" 属性を持ちます (二重引用符と小文字のテキストを使用しますが、TinyMCE が変更された場合は、大文字と小文字を区別しないテキストに一致させる方が良いと思います)

では、必要な Img タグのみに一致する正規表現と、src、幅、および高さを抽出するための別の 3 つの正規表現でしょうか?

みんな、ありがとう。

4

3 に答える 3

3

これに正規表現を使用するのは悪い考えだと思います。PHP Simple HTML DOM Parserなどを使用して解析する方がよいでしょう。その後、次のようなことができます。

// Load HTML from a string
$html->load($your_posted_content);

// Find all images 
foreach($html->find('img') as $element) 
       echo $element->src . '<br>';
于 2010-04-28T17:06:05.027 に答える
1

これを試して:

(?i)<img(?>\s+(?>src="([^"]*)"|width="([^"]*)"|height="([^"]*)"|\w+="[^"]*"))+

これは任意のイメージ タグに一致し、srcwidth、およびheight属性が存在する場合、それらの値はそれぞれグループ 1、2、および 3 に格納されます。ただし、これらの属性が存在する必要はないため、処理する前に 3 つのグループすべてに値が含まれていることを確認する必要があります。

于 2010-04-28T18:06:39.077 に答える
0

一般的に言えば、RegEx は HTML の解析には適していません。しかし、あなたのケースでは、範囲を非常に狭く制限する (つまり、属性width=".."height=".."属性のみを検索するなど) 場合、それを回避できる場合があります。

より良い解決策は、TinyMCE からコンテンツを舞台裏で非同期に転送し、適切な HTML/XML パーサーを使用してサーバー側で処理し、それが完了したらエディターのコンテンツを更新することです。

于 2010-04-28T17:07:48.750 に答える