主题:如何echo php源码(不是高亮那种)
argentmoon
[专家分:13260] 发布于 2007-11-12 14:04:00
查询数据库后,当返回值里包含<?php ?>之类的标记时,比如
$result= '<?php ..... ?>'
如何能将result中的内容按普通文本的方式输出?
另,如果在查询数据库时,字段中包含php源码的时候,同样也会出现错误,请问如果解决?
先表示感谢:)
回复列表 (共9个回复)
沙发
淡淡的 [专家分:2030] 发布于 2007-11-12 16:07:00
不知你要的是不是这两个函数:
StripSlashes()
htmlspecialchars()
板凳
argentmoon [专家分:13260] 发布于 2007-11-12 17:10:00
非常感谢!
php初学哈,好多东西摸索中T_T
3 楼
argentmoon [专家分:13260] 发布于 2007-11-13 16:03:00
再提个问:
假设数据库中有一个字段是
“<?php echo 'test'; ?>”或者“<?php echo "test"; ?>”
读取后放入变量$v中,
现在假设我要在一个<input type="text" name="t" value = "">中给它一个初值$v,
这样就写成了<input type="text" name="t" value = "<?php echo $v;?>">,替换完之后就会出现问题,请问这有比较好的解决办法吗?
4 楼
淡淡的 [专家分:2030] 发布于 2007-11-14 11:40:00
我把你在3楼说的做了一下,结果如下:
当从记录集中取出那个“<?php echo 'test'; ?>”放入变量$v中后,
做输入框<input type="text" name="t" value = "<?php echo $v;?>">,
这时输入框中显示<?php echo 'test'; ?>
如果要进一步调用输入框中的文本:
echo $t; //结果是空显
echo $v; //结果显示<?php echo 'test'; ?>
所以要调用那个文本时,用$v,别用$t。
不知我对你的问题理解的对不对。
5 楼
argentmoon [专家分:13260] 发布于 2007-11-14 14:03:00
谢谢你的回复。
问题就在<input type="text" value = "<?php echo $v;?>">这一块
如果里面写的是values = ""(双引号),好,那么$v为字段“<?php echo 'test'; ?>”(单引号)是没有问题的,但是当如果字段为“<?php echo "test"; ?>”(双引号)时,就会出问题了。
同理,如果里面写的是values = ''(单引号),则……
再者,如果字段是“hello "word" hi, 'thanks'”(注意,这是一个字段),插入的时候也会出现同样的问题。
-----------------------------------------------------
没法控制用户输入,但如果要做一个可以修改提交内容的页面时,则可能会要在一个input里回显给用户,但是如果用textarea,则不大美观
PS:我现在的作法是strip_tags,怎么说还是不大友好
6 楼
淡淡的 [专家分:2030] 发布于 2007-11-15 10:27:00
我还是没抓住问题的思路,
1。是引号问题、正则表达式问题、算法问题、还是别的什么问题?
2。“<?php echo "test"; ?>”是从数据库中取出的,还是用户输入的?
3。如果是单引号、双引号问题,“<?php echo 'test'; ?>”,“<?php echo "test"; ?>”和
“hello "word" hi, 'thanks'”我都试过了,结果就像4楼写得那样。
是否能把反映思路的那段代码贴上来?
7 楼
argentmoon [专家分:13260] 发布于 2007-11-15 14:30:00
抱歉,我没描述清楚:)
“<?php echo "test"; ?>”是从数据库中取出的字段。
这么说吧:
现在需要把用户的资料回显给用户以便修改,我写了如下语句:
<INPUT TYPE="text" NAME="modify_school" size = 15 value = "<?php if($regrow)echo $regrow['school'] ?>"> //$regrow是mysql_fetch_assoc的返回值
这句是显示学校资料的,如果用户以前提交的数据内容是“<?php echo "test"; ?>”,那么会造成数据显示不完整,还有一个引号会出现的框外。
8 楼
淡淡的 [专家分:2030] 发布于 2007-11-15 20:22:00
下面的程序我试过了,你前面给出的几个句子回显时没问题,你再试试,
<?php
require("connect.php"); //你自己做个链接数据库的程序connect.php
$query="create table if not exists modify (";
$query.="id int not null auto_increment primary key,";
$query.="school varchar(200))";
$result=mysql_query($query);
$query="insert into modify(school) values('$modify_school')";
$result=mysql_query($query);
$query="select * from modify";
$result=mysql_query($query);
while($row=mysql_fetch_row($result)){
$regrow=$row[1];
$regrow=StripSlashes($regrow);
$regrow=htmlspecialchars($regrow);
echo $row[0].$regrow."<br>";
}
?>
<form action=modify.php method=post>
<INPUT TYPE="text" NAME="modify_school" size=40 value = "<?php echo $regrow; ?>">
<input type=submit name=submit value=submit><br><br>
</form>
9 楼
argentmoon [专家分:13260] 发布于 2007-11-15 21:45:00
我错了T_T
再次表示感谢
我来回复