代码之家  ›  专栏  ›  技术社区  ›  Rowan

PHP将字符串用双引号括起来

  •  6
  • Rowan  · 技术社区  · 16 年前

    我试图将用户输入的字符串用双引号括起来作为输出,但我希望确保不会在字符串的任何一侧都用双引号括起来。例如,如果用户发布

    我不想把它变成

    “你好”

    我可以使用下面的代码很容易地做到这一点,但是我担心如果我在大量字符串中循环,这可能会变得很慢。

    $string = '"'.trim($string,'"').'"';
    

    谢谢

    5 回复  |  直到 16 年前
        1
  •  10
  •   timmow    16 年前

    Premature Optimisation 是万恶之源”——更多信息,请参见维基百科链接文章。

        2
  •  3
  •   Brienne Schroth    16 年前

    (为了可读性,使用[]作为引号)

    你说过你为[你好]做什么,但你为[我说你好,朋克]做什么?您仍然删除用户输入的引号,还是删除它们?或者再向前走一步,用单引号代替双引号……但是你必须考虑用户输入包含单引号和双引号的情况。如果用户输入了“语法错误”的文本,比如[“你好](没有结束语!),该怎么办。

    确保正确操作的最佳方法是为您能想到的每个边缘情况创建一个测试用例,并确保您提出的解决方案实际达到预期效果。

    如果此要求的实际原因是[我在某个点上获取用户的输入,然后在另一点上重新显示给他们,并且不想向他们显示像[“”data”“]这样看起来愚蠢的数据],那么您可能只想从输入字符串的开头或结尾删除双引号,因为从中间的螺丝上取下它们是用户想要的数据。

    如果你的目标仅仅是清楚地区分他们的输入和他们没有输入的文本,那么就考虑使用其他的高亮而不是引号的方法。因此,您可以显示[您输入的数据],而不是[您输入的数据] ]或者[您输入的:数据]完全避免了这个问题。

        3
  •  2
  •   David Thomas    16 年前

    就个人而言,我建议去掉输入中的引号。至于加快速度,如果您允许输入或存储报价,那么您将始终无法使用 if / else 在展示它们之前。

    显然,不管最终使用什么系统,您仍然需要对输入数据执行健全性检查。

        4
  •  1
  •   Michael Ryan Soileau    8 年前

    我是这样做的:

    function quotize(&$string)
    {
        if (empty($string) || is_null($string)) {
            return;
        }
    
        $char = '"';
        if ($string[0] != $char) {
            $string = $char . $string;
        }
    
        if (substr($string, -1) != $char) {
            $string .= $char; 
        }
    
        return;
    }
    
        5
  •  0
  •   chelmertz user1604064    16 年前


    ,你可以把它变成:
    用户:“她说‘嘿,好’”

    推荐文章