PHP用双引号括起一个字符串

时间:2009-10-12 16:05:35

标签: php optimization string

我正在尝试用双引号将用户输入的字符串换行输出,但我想确保我不会在字符串的任何一端使用双引号。例如,如果用户发布了

  

“你好”

我不想把它变成

  

“” 你好 “”

我可以使用下面的代码轻松地做到这一点,但是我担心如果我循环遍历很多字符串,这可能会变慢。

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

如果有人有更好的方法,那就太好了。同样,如果有人能证实我的方式没问题,我会很高兴。

由于

5 个答案:

答案 0 :(得分:10)

这正是我解决这个问题的方法。如果您的应用程序运行缓慢,并且您可以将其追溯到trim语句,那么唯一值得担心代码变慢。

一个众所周知的编程引用是“Premature Optimisation是所有邪恶的根源” - 请参阅维基百科文章链接以获取更多信息。

答案 1 :(得分:3)

仔细考虑所有情况应该发生的事情。 (使用[]作为可读性的引用)

你已经说过你为[“你好”]做了什么但是你做了什么[我说“你好”,朋克]?您是否仍然删除用户输入的引号,还是删除它们?或者更进一步用单引号代替双引号......但是你必须考虑用户输入包含单引号和双引号的情况!当用户输入“语法错误”的文本时如何[“你好](没有收尾报价!)。

确保您正确行事的最佳方法是为您能想到的每个边缘案例制作一个测试用例,并确保您提出的解决方案实际上符合预期。

如果这个要求的实际原因是[我在某个时刻接受用户的输入,然后在另一个点重新显示它们,并且不想向他们显示愚蠢的数据,如[“”数据“ “]],你可能只想删除输入字符串开头或结尾的双引号,因为用中心的螺丝将它们从用户的预期数据中删除。

如果您的目标仅仅是清楚地区分他们的输入和他们没有输入的文本,请考虑使用其他方法突出显示而不是引号。因此,您可以显示[您输入的数据]或[您输入的数据],而不是[您输入的数据],这样可以完全避免此问题。

答案 2 :(得分:2)

就个人而言,我建议在输入时删除引号。至于加快速度,如果您允许输入或存储引号,那么在显示引号之前,您总是会被if / else所困扰。

显然,无论您最终使用何种系统,您仍然需要对输入数据进行完整性检查。

答案 3 :(得分:0)

如果您想让用户写信,通常使用引号来表示报价中的报价:
她说“嘿嘿”

,你可以变成:
网友:“她说'嘿嘿'”

答案 4 :(得分:0)

我是这样做的:

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;
}