0

かなり長い HTML ドキュメントがあります。幅が 1000 ~ 1200 ピクセルのテーブルがあります (毎日変更されます)。大量のテキスト、表、および場合によっては埋め込まれた PDF。

別のページに短いプレビューを表示したい (オンライン新聞のように、タイトル、いくつかの文、画像、そして記事全体へのリンクを見つけることができる)。

最初の問題: プレビューが必要なページの幅が 800 ピクセルしかありません。

私の最初のアイデアは(10文だけを表示するため):

$lineswritten=0;
$stream=fopen($document,"r");
while ((($line = fgets($stream)) !== false)&&($lineswritten<10))
{

   if($lineswritten>=10)
   {
         echo "$line";

         $line=trim($line);
         if($line!="")          // if line is blank don't count it as text
         {
           $lineswritten=$lineswritten+1;
         }
   }
 }
 fclose($stream);

しかし、私にはいくつかの問題があります。 まず、タグ。メイン ページとプレビュー ページの両方がテーブルで構築されています。プレビューの最初の 10 行で、テーブルを開いても閉じない場合、プレビュー ページのすべてのレイアウトが台無しになります。

テーブルタグ ( と ) を正規表現でチェックしようと思いましたが、これらの表現についてはまだ調べていません。これらのタグをチェックして、10行目以降にのみ書き込むことはできますか?

第二の問題。画像。すごく大きいイメージがあるのか​​もしれません。タグから画像パスだけを取得することはできますか? それが可能であれば、画像のサイズを確認して、最終的に縮小することができます。

3番目の問題 次 のようなコードが埋め込まれたpdfがあります。

<iframe src="http://docs.google.com/gview?  url=http://www.mywebsite.ch/pdffolder/8121202.pdf&amp;embedded=true" style="width:990px; height:700px;" frameborder="0"></iframe> 

明らかに、幅と高さはそれほど簡単ではありません。それらも異なる場合があります。このような文字列を認識し、高さ:200px、幅700pxの固定でプレビューページに書き込むことはできますか?

どうもありがとうございました!

4

1 に答える 1

0

HTML の操作に正規表現を使用しないでください。代わりに、php のDOM ツールを使用してください。

たとえば、2 番目の問題 (画像から画像パスを取得する) は、次のようにDOMDocument::getElementByTageNameメソッドを使用して解決できます。

$dom = new DOMDocument;
$dom->loadHTML($table);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
    $src = $image->getAttribute('src');
    //do whatever with the image sorce
}

このコードの意図はより明確であり、それを達成するために非常に長く複雑で扱いにくい正規表現を記述する必要はありません。

于 2013-01-17T21:37:45.283 に答える