验证通知:"在表格#34中看到开始标记DIV;

时间:2015-03-25 22:19:55

标签: php html validation

我收到此错误正在运行验证:"启动表格中显示的标记div"导致"在上次错误后无法恢复。任何进一步的错误都将被忽略"。

<div class="post">
    <table>

        <?php
        $dir   = 'img/';
        $filetype = '*.*';
        $allow = array('jpg');
        $files = glob($dir.$filetype);
        $newest_images_first = true;
        $files = array_reverse($files);
        $i=0;
        $open = opendir($dir);      
        while (($file=readdir($open))!==false) {$ext=str_replace('.', '', strrchr($file, '.'));if (in_array($ext, $allow)) $list[$i++]=$file; }
        $perPage= 20;
        $total=count($list);
        $pages=ceil($total/$perPage);
        $thisPage=isset($_GET['pg'])?$_GET['pg']-1:0;
        $start=$thisPage*$perPage;
        $pageNumber= $thisPage+1;
        $perRow= 1;
        $imgCnt=0;
        $imgCnt+=1;
        for ($i=$start;$i<$start+$perPage;$i++) 

        { // <---------- this opens element

            echo '<div class="item">';  // <----------- this div doesn't open!!

                // Preloader
                echo '<div class="preloader"></div>';

                if (isset($list[$i])) {

                  echo '<figure>';
                   echo '<div class="photo">';

                    $exif = exif_read_data($files[$i], 0, true);
                    error_reporting(E_ERROR | E_PARSE);
                    $title = substr($files[$i],strlen($dir),strrpos($files[$i], '.')-strlen($dir));
                    $title = str_replace( array( '%', '_'), " ", $title);
                    $title = substr($title, 5);
                    $title = str_replace( array('', '_'), "", $title);
                    $imgname = $files[$i]; 
                    echo '<img src="'.$imgname.'" alt="blahblah '.$title.'" onLoad="this.width*=0.6;imgLoaded(this);" onError="this.onerror=null;this.src="bundles/blank.svg";">';

                  echo '</div>'; // .photo

                  echo '<figcaption>';                  

                  $title = preg_replace('/\'([^\']+)\'/', '<em>$1</em>', $title);
                  echo '<h2>'."". $title .'</h2>';
                  echo "<p>".$exif['IFD0']['ImageDescription']."</p>";

                  echo '</figcaption>';     
                 echo '</figure>';          

                            }

                            else {
                            echo "<td></td>";
                            }

                    if ($imgCnt%$perRow==0) echo "</tr><tr>";

                    echo '</div>'; // .item

                    }

                    closedir($open);
                    ?>

                    </table>        

                </div> <!-- post -->

我尝试了很多东西,但我找不到解决方案。有什么想法会发生什么?

2 个答案:

答案 0 :(得分:1)

为什么你不在表格中使用tr和td? 表标签内的div标签不正确。

答案 1 :(得分:0)

div标签可能不是表的直接子节点,但可以在td标签内使用。错误消息误导了我“表格内的div标签”。它可能是“内部”,而不是直接的孩子。

<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
</head>
<body>

<table>
   <div>DIV is not allowed here</div>
   <caption>  This it the Caption
          <div>This is a caption div -- why?</div>
   </caption>
     <tr>  <!-- tr Row 1 may not contain text.  -->
       <td> Col 1 Stuff goes here.</td>
       <td> Col 2 here.</td>
     </tr>
     <tr>
       <td>Col 1 of Row 2 is here.</td>
       <td>Col 2 Row 2
          <div>Sub part A</div>
          <div>Sub part B</div>
          <div>Sub part C</div>
       </td>
     </tr>
</body>
</html>

给出错误 - 错误:启动表中显示的标记div。 从第8行第8列;到第9行,第8栏

  

↩↩↩DIV

致命错误:上次错误后无法恢复。任何进一步的错误都将被忽略。

当使用注释删除第8行时,错误消失。 第13行表明另一个类似的错误 -   tr可能不直接包含文本。 现在给出了验证错误 -    错误:错误放置表格内的非空格字符。 这是类似的措辞,imho,误导。