php:字符串被双引号引起来,而不是单引号引起来。怎么修?

哈拉季涅尼奇

我在问这个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从字符串中删除所有未用单引号或双引号引起来的空格

如何在单引号引起来的字符串中转义单引号

用引号引起来的字符串处理引号

请给RegEx帮助-用引号引起来的字符串中包含双引号

SQLException:字符串'''后的右引号引起来

用单引号而不是双引号引起来的C ++中的转义序列

不要用双引号引起来

exec用双引号引起来

用双引号引起来

Python查找用单引号引起来的字符串

检查字符串是否用单引号引起来Javascript

PowerShell参数字符串始终用单引号引起来

ASP.NET Core API发送用双引号引起来的字符串

Perl-DBI字符串错误地被双引号引起来

用双引号引起来的字符串拆分问题

使用JavaScript提取由数字无关的双引号引起来的子字符串

如果用双引号引起来,awk上的逗号分隔字符串将忽略

正则表达式用于在不将单引号或双引号引起来时使用空格分割字符串

',(用引号引起来)

如果已经使用了单引号和双引号,该如何用引号引起来?

逗号分隔列表中的匹配项,不被单引号或双引号引起来

基本HTML / JavaScript混淆在Bootstrap弹出窗口中用单引号/双引号引起来

C#正则表达式提取用单引号引起来的字符串

使用util.format,在数组中的每个字符串周围用双引号引起来

如何使用正则表达式替换用双引号引起来的字符串?

Zsh:为什么\ n用单引号引起来?

将Yaml数据用单引号引起来

变量无法用单引号引起来

为什么optionsText用单引号引起来?昏死