【问题标题】:How to use str_replace to replace single and double quotes如何使用str_replace替换单引号和双引号
【发布时间】:2013-01-22 12:30:49
【问题描述】:

我必须创建一个登录表单,用户将在其中插入用户名和密码。我必须确保不处理 html 实体,并且我也不能允许处理单引号或双引号。我必须回显输入到表单中的数据并显示出来。

我必须使用 htmlentities 和 str_replace。我的 htmlentities 正确,但不确定如何利用 str_replace 函数替换用户可能输入表单的单引号和双引号。任何帮助都会很棒。

这是我当前的 PHP(可以使用)

<?php
$username = htmlspecialchars($_POST['username']);
$password    = htmlspecialchars($_POST['password']);
$comment = htmlspecialchars($_POST['comment']);
?>
<html>
<body>
Your username is: <?php echo $username; ?><br />
Your password: <?php echo $password; ?><br />
Your Comment was: <?php echo $comment; ?>

【问题讨论】:

  • 引号有什么问题?根据您的代码,它不会做任何有害的事情。 (您没有使用数据库。PHP 可以自动处理斜线)
  • 这就是教师想要的。他想确保我们知道如何使用 str_function。到目前为止,它只让我头疼(我对 PHP 很陌生)

标签: php


【解决方案1】:

试试下面的代码替换双引号

str_replace(chr(34), "replace_with", $content);

单引号

str_replace("'", "replace_with", $content);

【讨论】:

    【解决方案2】:
    $username = str_replace(array("'", "\""), "", htmlspecialchars($_POST['username']));
    

    【讨论】:

    • 我收到了一个语法错误。解析错误:语法错误,意外的 ';'在 F:\xampplite\htdocs\Webtech\samples\cmweb250_lab2.php 第 2 行
    【解决方案3】:
    $username = htmlentities(str_replace(array('"', "'"), '', $_POST['username']));
    

    【讨论】:

    • 解析错误:语法错误,意外';'在第 2 行的 F:\xampplite\htdocs\Webtech\samples\cmweb250_lab2.php 中。我只是复制并粘贴了你输入的内容并得到了语法错误。
    • 缺少括号,已修复。
    【解决方案4】:

    我猜你想要它this way..,请检查

    $yourPostVariable = "scor\"pi'on";
    
    //$name = str_replace(array("'", "\""), "", htmlspecialchars($yourPostVariable ) );
    
    echo str_replace(array("'", "\"", "&quot;"), "", htmlspecialchars($yourPostVariable ) );
    

    【讨论】:

    • 感谢您抽出宝贵时间ScoRpion!你的例子就像一个魅力:)
    【解决方案5】:

    要删除引号,您可以使用:

    $search = 'cars "black" in ...';
    $search = str_replace("\"", "", $search);
    // result: "cars black in ..."
    

    【讨论】:

      【解决方案6】:
       $keyItem = str_replace ("'","\'",$keyItem);
      

      这会将单引号替换为“转义”的单引号 \' 。

      【讨论】:

        【解决方案7】:
        $username_test = $_POST['username'];
        $username = str_replace(array("'", "\"", "&quot;"), "",htmlspecialchars($username_test) );
        
        
        //same for password :) 
        

        【讨论】:

        • 你能补充一些为什么这应该有效的细节吗?纯代码答案不是很有用,可能会被删除。
        • 在这个例子中,我们将搜索用户名。假设它是 cris'tik。现在它会在用户名中找到引号(')并将其替换为空格。答案与问题相关,所以我没有'认为不需要解释。
        • 即使提问者只想要代码(但这里看起来不是这种情况),对他来说你的回答就足够了,SO 的品质之一是回答者也尝试教育人们而不是给他们复制和粘贴答案。这就是为什么解释解决方案的答案比其他不解释的答案更受欢迎并获得更多选票。
        猜你喜欢
        • 2013-08-25
        • 2011-01-26
        • 2021-08-12
        • 1970-01-01
        • 1970-01-01
        • 2018-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多