我在问这个php问题:将字符串分成3部分...并获得了很好的答案。但是,我遇到了一个问题。问题是用双引号引起来的字符串要处理。因此,当$
符号在字符串中时,它在一种情况下将无法正常工作。
$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:美元($)登录密码字符串视为变量
我试过了
$str = $_POST['source'];
$str = (string)$str;// I hoped to convert "$abc$$$" to '$abc$$$' (to make single-quoted)
但这无济于事。任何想法如何面对这个问题?
它工作正常。它是导致问题的测试。
改为这样做
$_POST['source'] = '$abc$$$';
$str = $_POST['source'];
preg_match('/^([^\w]*)(\w+.*\w+)?([^\w]*)$/iu', $str, $matches);
$parts = array_slice($matches, 1);
print_r($parts);
结果
Array
(
[0] => $
[1] => abc
[2] => $$$
)
额外的例子
看一下这个简单的测试。我使用单引号字符串加载变量,并且var_dump将其显示为双引号字符串。
$test = '$var';
var_dump($test);
结果
string(4) "$var"
它只是转储函数决定显示字符串的方式,该字符串尚未更改
仅当在PHP本身内$
使用双引号字符串文字创建字符串变量时,才使用a来表示此变量扩展。这是PHP所做的事情,而双引号文字并没有内在的本质。
所以这
$test = "$var";
如果$var
不存在则将生成错误,如果不存在则将其扩展。但这仅仅是因为它是用PHP代码完成的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句