【发布时间】:2017-01-28 16:43:43
【问题描述】:
我在问this SO question php: split string into 3 parts... 并得到了很好的答案。但是,我遇到了一个问题。问题是要处理的双引号字符串。因此,当$sign 在字符串中时,它在一种情况下无法正常工作。
$str = $_POST['source'];//comes double-quoted, example: "$abc$";
这样,上述问题的答案中的代码是:
<?php
$str = "$abc$$$";//comes from _POST['source'];
preg_match('/^([^\w]*)(\w+.*\w+)?([^\w]*)$/iu', $str, $matches);
$parts = array_slice($matches, 1);
print_r($parts);
?>
不起作用并导致E_NOTICE : type 8 -- Undefined variable:
从我发现问题是"$abc$$$" 是双引号,而不是单引号。这导致将 $ 视为变量:SO: Dollar ($) sign in password string treated as variable
我试过了
$str = $_POST['source'];
$str = (string)$str;// I hoped to convert "$abc$$$" to '$abc$$$' (to make single-quoted)
但这无济于事。 任何想法如何面对这个问题?
【问题讨论】:
-
有什么理由拒绝投票吗? Downvoter,你能解释一下为什么吗?谢谢。
-
$str = _POST['source'];我没有抓住这里。你为什么要故意从超全局中删除$? -
这是一个错字。更新。谢谢。
-
不,它工作得很好。
-
$str = $_POST['source'];将为您提供值:$abc$$$并且不是双引号(只有当您自己在代码中编写字符串时,引号才重要)。我认为您的错误是别的地方。你在哪一行得到这个错误?
标签: php string http-post double-quotes