这是支付宝的API文档。请问大佬,我想把代码中的大乐透三个字换成用变量表示,不想每次都这样写死。该怎么操作啊?如果把‘大乐透’赋给变量的话,不就带了引号了吗。而代码中的字的双引号已经被转义了。如果再加个引号会不会出错?
这是支付宝的API文档。请问大佬,我想把代码中的大乐透三个字换成用变量表示,不想每次都这样写死。该怎么操作啊?如果把‘大乐透’赋给变量的话,不就带了引号了吗。而代码中的字的双引号已经被转义了。如果再加个引号会不会出错?
"{"./*此处省略*/."\"subject\":"\"".$my_variable."\""./*继续省略*/
$my_variable
需要自己转义。
===================
‘大乐透’赋给变量的话,不就带了引号了吗
赋给变量为啥会带引号,引号只是在代码里用来区分字符串的,不是字符串值得一部分。
字符串的引号只是表示边界,并不是字符串内容的一部分。
$str1 = 'aaa';
$str1
的值是aaa
,不是'aaa'
。
$str2 = "aaa";
$str2
的值也是aaa
,不是"aaa"
。
$str1 == $str2;
上面这个表达式的结果是true
,因为两个变量值都是aaa
。
双引号和单引号的区别,一是双引号中的可以对变量进行解析,而单引号中不行。
$str3 = 'value: $str1';
$str4 = "value: $str1";
$str3
的值是value: $str1
,而$str4
的值是value: aaa
。
另一个区别是,单引号中只能转义它本身及反斜线,而双引号还能转义其他一些特殊字符。
$str5 = '\'';
$str6 = '\\';
$str7 = '\\\'';
$str8 = '\n';
$str9 = '"';
$str5
的值是'
(一个单引号),$str6
的值是\
(一个反斜线),$str7
的值是\'
(一个反斜线一个单引号),$str8
的值是\n
(一个反斜线一个n),$str9
的值是"
(一个双引号)。
你只要明白,转义的作用是在会引起歧义的地方,或是代表特殊字符的地方使用。
比如$str5
中,如果不对单引号转义,程序就会认为它是字符串结尾,和后面的真正的字符串结尾的单引号冲突。$str6
中,如果不对反斜线转义(只有一个反斜线的话),就会造成反斜线将后面的单引号转义了,从而没有了字符串结尾导致出错。而$str8
中,由于反斜线不会将n转义,所以反斜线就表示它自身,不用转义。在$str9
中,因为双引号在单引号中没有歧义,所以不用转义。
$str10 = "\"";
$str11 = "\\";
$str12 = "\\\"";
$str13 = "\n";
$str14 = "'";
$str10
的值是"
(一个双引号),$str11
的值是\
(一个反斜线),$str12的值是
"(一个反斜线一个双引号),
$str13的值是一个换行符,
$str14的值是
'`(一个单引号)。
可以看到和单引号是类似的,但是$str13
出现了不同,因为双引号能转义更多的特殊字符,所以\n
就代表了换行符。
字符串中储存的值是转义字符代表的值而不是你代码中的原始值,所以遇到在引号中引用引号不需要再次转义。
$str15 = "${str14}hello$str14";
$str15
的值是"hello"
,$str14
中的值虽然是双引号,但用在这里并不会引起歧义,所以直接使用不用担心转义问题。
前一个用花括号的原因是,如果不包起来(即$str14hello
),PHP会认为这一整串都是变量名从而导致错误。花括号也可以包在外面(即{$str14}
)。
由于$
(美元符号)在双引号中表示变量解析,所以如果要表示它也要转义(即\$
)。
2 回答1.3k 阅读✓ 已解决
1 回答967 阅读✓ 已解决
2 回答839 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答895 阅读
1 回答883 阅读
1 回答814 阅读
setBizContent接收的是一个字符串,你用单引号传进去就没这问题了。
(支付宝的API文档很烂的)