0

各画像名のハイパーリンクを設定しようとすると、ハイパーリンクに未定義のimgitem通知が表示されます。<a>タグを間違った場所に配置していませんか?

echo '<td width="11%" class="imagetd">';
if (empty($arrImageFile[$key])) {
    echo '&nbsp;';
} else {
    echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[$imgitem]" target="_blank">';
    echo implode("</li>\n<li></a><a href='previewImage.php?imgId=[$imgitem]' target='_blank'>", array_map(function($imgitem){
    return htmlspecialchars($imgitem);
},  $arrImageFile[$key]));
    echo '</li></ul></a>';
}
echo '</td>'; 

アップデート:

動作していない現在のコード:

    <table id="tableqanda" cellpadding="0" cellspacing="0">
    <thead>
    <tr>
        <th width="11%" class="image">Image</th>
    </tr>
    </thead>
    </table>
    <div id="tableqanda_onthefly_container">
    <table id="tableqanda_onthefly" cellpadding="0" cellspacing="0">
    <tbody>
        <?php

function imageName( $imgitem ) {
    return htmlspecialchars($imgitem); //432
}


          foreach ($arrQuestionId as $key=>$question) {
        echo '<tr class="tableqandarow">'.PHP_EOL;
        echo '<td width="11%" class="imagetd">';

        if (empty($arrImageFile[$key])) {
            echo '&nbsp;';
        } else {
    echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 456
    echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) ); //line 457
    echo '</li></ul></a>';
        }
        echo '</td>';
        echo '</tr>'.PHP_EOL;
        }
?>
    </tbody>
    </table>
    </div>

受信したエラー:

警告: htmlspecialchars() は、パラメーター 1 が文字列であると想定し、432 行目の ... で指定された配列

Notice: 未定義の変数: imgitem in ... 456 行目

Notice: 未定義の変数: imgitem in ... 457 行目

4

2 に答える 2

1

一重引用符を使用すると、リテラル値が返されます。

echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[$imgitem]" target="_blank">';

への変更:

echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">';

アップデート

function imageName( $imgitem ) {
    return htmlspecialchars($imgitem);
}

echo '<td width="11%" class="imagetd">';

if( empty($arrImageFile[$key]) ) {
    echo '&nbsp;';
} else {
    echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 443
    echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) );
    echo '</li></ul></a>';
}

echo '</td>';
于 2013-01-24T22:20:43.310 に答える
1

私はあなたの構造を次のようなものに変更します。

     function CreateLink($filename, $type){
 if($type == 'image'){
  return '<a href="previewimage.php?filename='.$filename.'" title="Click to view in New window" target="_blank">'.htmlspecialchars($filename).'</a>';
 }
}

......................


        $img_result = '';
        if(empty($arrImageFile[$key])){
          $img_result = '&nbsp;';
        }else{
          $img_result .=  '<ul class="qandaul">';
           if(is_array( $arrImageFile[$key] )){
            foreach($arrImageFile[$key] as $filename){
             $img_result.= '<li>' . CreateLink($filename, "image") . '</li>';
            }
           }else{
            $img_result.= CreateLink($arrImageFile[$key], "image");
           }
           $img_result.= '</ul>';
        }
        //end:procedure image

        echo '<td width="11%" class="imagetd">'.$img_result.'</td>' . PHP_EOL;
于 2013-02-05T01:08:39.007 に答える