我有以下代码,但它不起作用。我正在尝试创建一个脚本输出:
echo "<script type='"text/javascript'"><!--'n";
echo "SLIDES = new slideshow('"SLIDES'")'n";
// Now loop through the files, echoing out a new select option for each one
foreach( $files as $fname ) {
echo 's = new slide()'n';
echo 's.src = '"http://cashbackflorida.com/wpradmin/modules/wprrets/photos/'.$result ->MLS.'/'{$fname}'n'"';
echo 's.width = '"560'"'n';
echo 's.height = '"420'"'n';
echo 's.alt = '"{$fname}'"'n';
echo 's.text = unescape('"'")'n';
echo 's.link = '"'"'n';
echo 's.target = '"'"'n';
echo 's.attr = '"'"'n';
echo 's.filter = '"'"'n';
echo 'SLIDES.add_slide(s)'n';
}
echo '--></script>'n';
不要这样做。只需将数组输出到JavaScript并在那里进行处理。
var files = <?php echo json_encode($files); ?>;
您会在字符串转义中发现问题
echo 's.height = '"420'"'n';
你不能用这样的单引号字符串转义。所以试试这个
echo "s.height = '"420'"'n";
您不需要在双引号中转义单引号,反之亦然,但您只能在双引号字符串中获得类似的换行符。不过,我建议使用HEREDOC来编写这种字符串。
$fnamej = json_encode($fname);
echo << EOT
s.height = "420";
s.alt = $fnamej;
EOT;
我还倾向于说,您最好用javascript处理这个问题。这可能会突然表现得非常糟糕,并且会占用更多的带宽。