PHP echo()语法问题

输出一个图像和一个链接,链接就是$dir变量+变量$File的值
echo "<img>folder.jpg</img><a herf = "$dir.\.$_File">$File</a><br />"
为什么错误

你的这行语句中出现了多处概念性的错误

一、PHP字符串的句点连接:

1. php独立的字符串与变量、变量与变量、数字与变量、字符串与字符串之间,可以使用句点“."进行连接

示例:$result_str = "aaa" . $str;

注意看它们之间的形式,字符串使用单引或双引括起来,然后使用句点,后边跟着变量,反过来亦然: $result_str = $str . "aaa";

这样,你的写法按照这种语法结构书写就出现了问题,因为你的字符串之间出现了不应该出现的双引,如果按第1点所讲,你的写法应该是:

echo "<img>folder.jpg</img><a herf = ".$dir. "\" . $_File . ">" . $File . "</a><br />"

2. 可这样依然不正确,因为在PHP字符串中,有一个特殊存在的字符”\“,这个字符是用来转义的特殊存在,如果想让它正常出现在字符串中,在”\"的前面,应该再加一个转义符”\“,也就是:”\\“

echo "<img>folder.jpg</img><a herf = ".$dir. "\\" . $_File . ">" . $File . "</a><br />"

二、上面的这种写法或许不是你的初衷,你本是想把变量写在双引号之间,让它依然当做变量输出,这是PHP的另一种特殊语法结构

1. 在PHP中,双引号之间的变量依然会被PHP解析器解析为变量,而不是字符串:

示例:echo "$abc" 与 echo $abc相同

2. 再复杂一些,就是既有变量又有字符串: echo "str$abc"

这样,比如$abc里面存放的是”u“这个字符串,那么输出的就是:"stru"

3. 反过来,如果我想把变量放在前面: echo "$abcstr" 这样就不行了,你必须要保证变量后面跟着的是非字母、数字和下划线才行,否则PHP解析器会认为你的变量不是$abc,而是$abcstr

你的例子中不存在这一条的问题;

4. 那么按照这一点来看,你的写法好像并没有错误,那么看第三条:

三、想在双引号之间输出双引号的字符串,需要使用到转义字符:

1. 比如有这样的一个字符串: echo "say:"yes"";

这里,我本是想输出双引号,但发现,PHP解析器不认识它们,这是对的,不认识才对,认识了反倒不正常,因为PHP会把双引号当成字符串的边界。

解决: echo "say:\"yes\"";

2. 你的问题中就出现了这种情况(如果按照你的初衷来看)

你的问题: echo "<img>folder.jpg</img><a herf = \"$dir\$_File\">$File</a><br />"

注意,你的这行字符串中,两个需要输出的双引号变成了:\"

可这样还不行,你里面出现了一个\,就是目录的分界,那这个也需要转义:

echo "<img>folder.jpg</img><a herf = \"$dir\\$_File\">$File</a><br />"

四、原本到这里,看上去好像没有问题了,但有一个额外的现象要多提一下:

HTML中的<img>标签,你写得非常不正解,这个标签是自封闭型标签,在XHTML1.0中,规范的写法是:
<img src="abc/abc.jpg" alt="" />

五、总结,你的程序最后有两种可能的写法:

1. 利用句点连接语法和双引号转义:

echo "<img src=\"folder.jpg\" alt=\"\"><a herf = \"".$dir. "\\" . $_File . "\">" . $File . "</a><br />";

2. 利用双引号之间的变量可以解析:

echo "<img src=\"folder.jpg\" alt=\"\"><a herf = \"$dir\\$_File\">$File</a><br />"

3. 其实还有第三种写法,就是利用单引号之间可以出现不用转义的双引号,以及单引号之间的特殊字符无需转义的特性写法,这个写法我就不详细说原理了:

echo '<img src="folder.jpg" alt=""><a herf = \"'.$dir. '\\' . $_File . '">' . $File . '</a><br />';来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-02
php echo输出符合一定的规则。引号要配对,字符串要用引号 引起来。有单引号和双引号的时候更要注意。你用的是 \ 这个符号容易转移引号。php中真正的字符串是单引号,字符串连接符那个点最好别省略。html里面的标签最好写成src属性的形式。应该这么写

echo '<img src="folder.jpg" /><a herf = '.$dir.'\''.$_File.'>'.$File.'</a><br />';
或者
echo "<img src='folder.jpg' /><a herf = '".$dir."\"".$_File.">".$File."</a><br />";
第2个回答  2013-01-02
echo "<img>folder.jpg</img><a herf = ".$dir."\".$_File.">".$File."</a><br />";

应该写成这样吧!
应该php中字符串与变量的连接符是用.(点号)的,
调试的时候,你可以先在<a herf = "xxx">$File</a> xxx是你的地址,看是否运行成功!
如果成功了,在用$dir.$_File 拼成xxx的格式.
拼成功后,替换过去就ok了本回答被网友采纳
第3个回答  2013-01-02
还有一种写法
<?php
$str = '1.jpg';
echo <<<EOT
<img src="{$str}" />
EOT;
?>
第4个回答  2013-01-02
图片标签<img src=""/> $_File是什么
相似回答