正则表达式只写标签(html,php)

时间:2013-01-17 21:34:59

标签: php html regex iframe

我有一个很长的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行之后只写它们?

第二个问题。 图片。我可能有一个非常大的图像。是否可以从标签中检索图像路径?如果可能的话,我可以检查图像尺寸并最终将其缩小。

第三个问题 我的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?

非常感谢!

1 个答案:

答案 0 :(得分:0)

不要使用正则表达式来操纵HTML,而是使用php的DOM tools

例如,第二个问题(从图像获取图像路径)可以通过使用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
}

此代码的目的更清晰,您不必编写一个非常长,复杂且难以管理的正则表达式来完成它。