关于使用文本域(TextArea)的一个问题

问题

  我在使用表单处理信息时发现,对文本域的处理不正确。例如下面的一个表格:

---------------------------------------------------------------
test.html

<html>
<head>
<title> TextArea Test </title>
</head>
<body bgcolor="#FFFFFF">
<form method="post" action="test.php">
文件名<input type="text" name="filename" value="test.txt"><br>
内容:<br>
<textarea name="content" cols="80" rows="20">"aaa" \"bbb\"</textarea><br>
<input type="submit" name="Submit" value="写好了">
<input type="reset" name="Submit2" value="重写">
</form>
</body>
</html>

test.php

<?
$fp=fopen($filename, "w");
fwrite($fp, $content);
fclose($fp);
echo "OK";
?>
------------------------------------------------------

  上面的例子是用来测试的,主要是想完成用户可以输入一个文件名,然后可以输入文件的内容。确认后可以在服务器上保存文件。下面简单地说明一个两个文件的内容。

  test.html 中有一个表单,里面有一个文本框和一个文本域。文本框用来输入要保存的文件名,文本域
用来输入文件的内容。文件名缺省设为"test.txt",文件内容缺省设为"aaa" \"bbb\"。表单的动作为"post",执行文件为"test.php"。

  test.php则很简单。打开指定文件,写入文件内容,关闭文件,输出"OK"。

  原来我想文件内容应该是"aaa" \"bbb\",但结果并不是这样,而是\"aaa\" \\\"bbb\\\"!在每一个双引号(")和反斜线(\)(其实还有单引号和空(nul))前都加上了一个转义用的反斜线。这是为什么? 于是,我查询了PHP中文手册,看到关于PHP.ini的配置中关于magic_quotes_gpc和magic_quotes_runtime的说明,我知道了是因为PHP给自动处理了。这样,我就将PHP.ini配置中的magic_quotes_gpc和magic_quotes_runtime
设成了off,结果就正确了。

  但是如果服务器我无法改动怎么办?于是又查阅了一下字串符处理函数,我发现stripslashes()函数就可以完成这个工作。这样首先把PHP.ini改成原来的样子,再修改test.php如下:

--------------------------------------------------
<?
$fp=fopen($filename, "w");
$content=stripslashes($content);
fwrite($fp, $content);
fclose($fp);
echo "OK";
?>
--------------------------------------------
  再检查结果,完全符合我的需要!

  还有要注意的是,如果你想做一个修改文件内容的应用。如,首先把文件内容读出来,放入到文本域中,用户可以进行修改。那么当文件中有特殊的符号,如"<",">","&" 符等,直接显示就会与实际内容不符。没关系,PHP还提供了htmlspecialchars()函数将特殊字符转换成HTML 的字串格式,这样显示与处理都是正确的了。

  这是我在处理文本域时发现的一个问题,希望能对你有帮助!

时间: 2025-01-01 07:51:57

关于使用文本域(TextArea)的一个问题的相关文章

文本域 textarea:CSS让Textarea文本域根据内容自适应高度fenge文本域

  <title>文本域自适应高度 - www.cxybl.com</title> <textarea style="width:300px;overflow-y:visible">在这里输入一些字符看一下,当超出初设的文本域高度时,文本域自动伸缩变高. 本文链接http://www.cxybl.com/html/wyzz/CSS/20130908/40081.html

Bootstrap系列 -- 16. 文本域textarea

  文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度.但如果textarea元素中添加了类名"form-control"类名,则无需设置cols属性.因为Bootstrap框架中的"form-control"样式的表单控件宽度为100%或auto. <form role="form"> <div class="form-group"> <textarea class=

php 批量添加多行文本框textarea一行一个_php技巧

复制代码 代码如下: $act=!empty($_GET['act']) ? trim($_GET['act']) : ''; switch($act) { case 'adda': $area['a_value'] = trim($_POST['a_value']); $area['a_type']=3; if(strpos($area['a_value'], "\n") === false) { //echo $area['a_value']; //add($area); //$D

Dreamweaver如何设置文本域文字

  使用"设置文本域文字"行为可以将表单文本域中的内容替换为指定的内容. 一.Dreamweaver创建命名的文本域 1. 插入单行文本域. 2. 插入多行文本域. 提示:在创建单行或者多行文本域时,确定已经在属性面板的"文本域"框中添加了ID号. 二.Dreamweaver设置文本域文字行为 1. 选择一个文本域. 2. 打开行为面板. 3. 点击"添加行为(+)"按钮,在弹出的下拉菜单中选择"设置文本"项,在子菜单中选择&

JS限制Textarea文本域字符个数

<html> <head> <title>JS限制Textarea文本域字符个数</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <SCRIPT LANGUAGE="JavaScript"> <!--// function textCounter(field,

JS限制Textarea文本域字符个数的具体实现

这篇文章介绍了JS限制Textarea文本域字符个数的具体实现,有需要的朋友可以参考一下   复制代码 代码如下:    <head>       <title>JS限制Textarea文本域字符个数</title>       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />       <SCRIPT LANGUAGE

我想做一个窗体,这里面可以像在dos命令窗下一样输入命令,并在文本域显示结果,用java该怎么写

问题描述 我想做一个窗体,这里面可以像在dos命令窗下一样输入命令,并在文本域显示结果,用java该怎么写 要效果完全跟dos一样,我试过用 rutime.getRuntime().exec(),但是有些命令可以得到正确结果,有些命令就没反应,像ping命令arp-a就可以,java,c:,dir,这些就不行,不知其中奥妙,求大神给个程序,我搜了很多感觉都不适合 解决方案 http://www.cnblogs.com/leohxj/archive/2012/11/26/2789284.html

JS限制Textarea文本域字符个数的具体实现_javascript技巧

复制代码 代码如下:    <head>       <title>JS限制Textarea文本域字符个数</title>       <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />       <SCRIPT LANGUAGE="JavaScript">       <!--//   

使用FormFile上传文件,在action前使用了Filter过滤器获取一个文本域的值,怎么获取?

问题描述 使用FormFile上传文件,在action前使用了Filter过滤器获取一个文本域的值,怎么获取?我使用ServletFileUpload在Filter中获取到值后,在Action中获取的所有值都变成NULL了,请问这是怎么回事?怎么去解决?谢谢!使用的是struts1.2 解决方案 本帖最后由 xihuanshuang 于 2010-11-15 12:48:07 编辑解决方案二:在过滤器中再把request参数传到action里.