通过POST传递时如何在文本区域中保留换行符?

拉克希亚·拉吉(Lakshya Raj)

在我的网页中,我textarea通过POSTMethod将a的值传递给PHP 该值应该被写入文件中,但是在$_POST包含该值键中,它没有换行符,因此当将其写入文件时,就没有换行符(好像有些换行\n了)。

是否有一些PHP / JS函数将JS textarea换行符替换为可以在文件中工作的PHP换行符?

编辑:

我的代码应该是文件编辑器。这里是:

<!DOCTYPE html>
<html>
    <head>
        <title>File Editor</title>
        <meta charset="UTF-8"/>
        <style>h1{text-align:center;font-size:40px;padding:10px;border:2px solid black;border-radius:10px;}textarea{width:90%;height:90%}</style>
    </head>
    <body>
        <h1>File Editor</h1>
        <?php
        if(isset($_POST["save"],$_POST["extra"]))
          file_put_contents($_POST["save"],$_POST["extra"]);
        if(isset($_POST["delete"]))
          unlink($_POST["delete"]);
        if(!isset($_POST["filename"],$_POST["submit"])){
        ?>
        <form action="editor.php" method="post">
            <label for="filename" id="n">Enter a file to edit: </label>
            <input type="text" name="filename" placeholder="Enter file name to edit"/>
            <button type="submit" name="submit">Submit</button>
        </form>
        <?php }else{ ?>
        <textarea><?php echo htmlspecialchars(file_get_contents($_POST["filename"])); ?></textarea>
        <span style="display:none"><?php echo $_POST["filename"]; ?></span>
        <form action="editor.php" method="post" style="display:none" id="a">
            <input name="close" id="v" />
            <input name="extra" id="e" />
        </form><br/>
        <button id="save">Save</button>
        <button id="close">Close file</button>
        <button id="delete" style="color:red">Delete file</button>
        <script>
            function submit(v,x,c){
                document.getElementById("v").name=v;
                document.getElementById("v").value=x;
                document.getElementById("e").value=c;
                document.getElementById("a").submit();
            }
            document.getElementById("save").onclick=function(){
                submit("save",document.getElementsByTagName("span")[0].innerHTML,document.getElementsByTagName("textarea")[0].value.replace(/\n/g,"\r\n"));
            }
            document.getElementById("close").onclick=function(){submit("close");}
            document.getElementById("delete").onclick=function(){
                if(confirm("Are you sure you want to delete this file?"))submit("delete",document.getElementsByTagName("span")[0].innerHTML);
            }
        </script><br/><br/>
        <?php } ?> </body>
</html>
詹斯

我看到您的javascript代码的目的只是为了填写任何输入值。这可以通过<form>直接利用来完成最有可能的是,将数据复制到<input tye="text">(文本是默认类型)将破坏换行符。

这样的事情应该是等效的,并且没有出现问题:

<!DOCTYPE html>
<html>
    <head>
        <title>File Editor</title>
        <meta charset="UTF-8"/>
        <style>h1{text-align:center;font-size:40px;padding:10px;border:2px solid black;border-radius:10px;}textarea{width:90%;height:90%}</style>
    </head>
    <body>
        <h1>File Editor</h1>
<?php
if(isset($_POST["save"],$_POST["extra"]))
    file_put_contents($_POST["filename"],$_POST["extra"]);
if(isset($_POST["delete"]))
    unlink($_POST["filename"]);
if(!isset($_POST["filename"],$_POST["submit"])){
?>
<form action="editor.php" method="post">
    <label for="filename" id="n">Enter a file to edit: </label>
    <input type="text" name="filename" placeholder="Enter file name to edit"/>
    <button type="submit" name="submit">Submit</button>
</form>
<?php }else{ ?>
<span style="display:none"><?php echo $_POST["filename"]; ?></span>
<form action="editor.php" method="post">
    <textarea name="extra"><?php echo htmlspecialchars(file_get_contents($_POST["filename"])); ?></textarea>
    <br/>
    <input type="hidden" name="filename" value="<?= $_POST['filename'] ?>">
    <button name="save">Save</button>
    <button name="close">Close file</button>
    <button name="delete" style="color:red">Delete file</button>
</form>
<script>
    document.getElementById("delete").onclick=function(e){
        if(!confirm("Are you sure you want to delete this file?")) e.preventDefault();
    }
</script>
<br/><br/>
<?php } ?> 
    </body>
</html>

同样如前所述,显示时可能需要格式化html的换行符。


当需要传递相同或隐藏的数据时,可以使用<input type="hidden" name=".." value="..">这用于传递文件名。按下按钮即可通过所需的动作。您按下的按钮名称将在请求中传递。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Ruby on Rails在文本区域中保留换行符

如何在段落中包含从文本区域中获取的换行符?

从文本区域获取文本时如何保留换行符?

我如何通过Ajax从文本区域将换行符传递给PHP

如何在HTML文本区域添加换行符?

WordPress-如何在不丢失换行符的情况下清理文本区域中的多行文本?

在文本区域中获取换行符

使用Javascript在文本区域中添加换行符

React 文本区域中的换行符

如何防止在Wordpress中删除文本区域中的换行符?

如何用<br/>替换文本区域中的换行符

在php文本区域中,换行符未转换为换行符

通过JSP表单发送数据时,如何在Spring中保留换行符

如何在 Django 管理 UI 的文本区域中保留空行?

当用户在长文本中间插入换行符时,如何防止Chrome的文本区域中的光标跳到顶部?

如何通过跳过换行符将文本区域内容替换为“ *”

通过ssh在返回的文本中保留'\ n'换行符

剥离HTML标签并考虑文本区域中的换行符

剥离HTML标签并考虑文本区域中的换行符

如何在HTML textarea POST数据中保留换行符

如何在列表元素中保留换行符\ n?

生成XML时如何在CDATA中保留换行符?

使用gocolly抓取时如何在html表格单元格中保留换行符

从保存的文本区域反应显示换行符

从文本区域存储换行符和缩进

使用 rvest 获取文本时如何保留换行符

如何从所选选项中获取多个值并放入带有换行符的文本区域

将输出与正则表达式进行比较时,如何在bash中保留换行符?

如何在文本区域中显示所选选项的文本