Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将字符串用双引号括起来_Php_Optimization_String - Fatal编程技术网

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

PHP将字符串用双引号括起来,php,optimization,string,Php,Optimization,String,我试图将用户输入的字符串用双引号括起来作为输出,但我希望确保不会在字符串的任何一侧都用双引号括起来。例如,如果用户发布 “你好” 我不想把它变成 “你好” 我可以使用下面的代码很容易地做到这一点,但是我担心如果我在大量字符串中循环,这可能会变得很慢 $string = '"'.trim($string,'"').'"'; 如果有人有更好的方法,那就太好了。同样,如果有人能证实我的方式是好的,我会很高兴的 谢谢这正是我解决这个问题的方法。只有在应用程序速度慢的情况下,才值得担心代码速度慢,并且可

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

“你好”

我不想把它变成

“你好”

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

$string = '"'.trim($string,'"').'"';
如果有人有更好的方法,那就太好了。同样,如果有人能证实我的方式是好的,我会很高兴的


谢谢

这正是我解决这个问题的方法。只有在应用程序速度慢的情况下,才值得担心代码速度慢,并且可以追溯到trim语句


一句著名的编程格言是“是万恶之源”——有关这方面的更多信息,请参阅维基百科的链接文章

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


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

如果您想让用户编写:
她说“嘿,嘿”

,您可以将其转换为:

用户:“她说‘你好’”

仔细考虑所有情况下会发生什么。 (为了可读性,使用[]作为引号)

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

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

如果这个要求的真正原因是[我在某个点上获取用户的输入,然后在另一个点上重新显示给他们,并且不想向他们显示像[“数据”]这样看起来愚蠢的数据],您可能只想从输入字符串的开始或结束处删除双引号,因为将它们从中间旋入用户的预期数据

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

我是这样做的:

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

您在哪里使用此字符串?是HTML、Javascript还是部分SQL查询?请确保没有任何情况下用户在文本中使用引号,这些引号随后也会被修剪,但可能不应该被修剪。并且:这是一个引号:
-这是一个双引号
-您使用的这些术语有点错误。对不起,塔尔坤-我的术语不好。我会修正谢谢你的回答,我同意,但我正在工作的系统部分是由其他人组装的,所以我必须处理可怕的现有数据。。我最终会把它消毒干净+1对于用例测试,我很惭愧在我自己的答案中错过了一个很好的点=/