{ }
PHP字符串文字中的(花括号)是什么意思?
这是字符串插值的复杂(弯曲)语法。从手册中:
复杂(卷曲)语法
之所以称其为“复杂”,是因为语法复杂,而是因为它允许使用复杂的表达式。
可以通过此语法包括具有字符串表示形式的任何标量变量,数组元素或对象属性。只需以与出现在字符串外部相同的方式编写表达式,然后将其包装在
{
和中即可}
。由于{
无法转义,因此仅在$
紧随其后的才会识别此语法{
。使用
{\$
得到文字{$
。一些示例可以使您清楚:<?php // Show all errors error_reporting(E_ALL); $great = 'fantastic'; // Won't work, outputs: This is { fantastic} echo "This is { $great}"; // Works, outputs: This is fantastic echo "This is {$great}"; echo "This is ${great}"; // Works echo "This square is {$square->width}00 centimeters broad."; // Works, quoted keys only work using the curly brace syntax echo "This works: {$arr['key']}"; // Works echo "This works: {$arr[4][3]}"; // This is wrong for the same reason as $foo[bar] is wrong outside a
string.
// In other words, it will still work, but only because PHP first looks
for a
// constant named foo; an error of level E_NOTICE (undefined constant)
will be
// thrown.
echo “This is wrong: {$arr[foo][3]}”;// Works. When using multi-dimensional arrays, always use braces around
arrays
// when inside of strings
echo “This works: {$arr[‘foo’][3]}”;// Works. echo "This works: " . $arr['foo'][3]; echo "This works too: {$obj->values[3]->name}"; echo "This is the value of the var named $name: {${$name}}"; echo "This is the value of the var named by the return value of
getName(): {${getName()}}”;
echo "This is the value of the var named by the return value of
\$object->getName(): {${$object->getName()}}”;
// Won't work, outputs: This is the return value of getName():
{getName()}
echo “This is the return value of getName(): {getName()}”;
?>
通常,此语法是不必要的。例如,这:
$a = 'abcd';
$out = "$a $a"; // "abcd abcd";
行为与此完全相同:
$out = "{$a} {$a}"; // same
因此花括号是不必要的。但是 这个 :
$out = "$aefgh";
由于没有命名为的变量,根据您的错误级别,将不起作用或产生错误$aefgh
,因此您需要执行以下操作:
$out = "${a}efgh"; // or
$out = "{$a}efgh";
假设一个字符串的格式如下: 我想提取: 什么正则表达式可以用于这样的提取? 我被这个困住了:
上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。
问题内容: 这个问题看起来很尴尬,但我一直找不到答案。 与下面的C#代码行等效的PHP是什么? 此示例创建一个带有单个Unicode字符的字符串,该字符串的“ Unicode数值”为十六进制的1000(十进制的4096)。 也就是说,在PHP中,如何创建一个具有“ Unicode数值”已知的Unicode字符的字符串? 问题答案: 因为JSON直接支持语法,所以我想到的第一件事是: 另一种选择是使
我一直在仔细阅读这篇SO文章,试图将花括号文字放在我的插值字符串周围。 我对的预期结果是“{foo}”。我曾尝试用反斜杠转义外部的花括号,但这不起作用,我也没想到会这样。我怎么才能在插入的字符串变量周围加上文字花括号?更准确的例子是: 预计:“我想吃一些{foo}。” 实际:“我想吃一些{testString}。” 我怎样才能做到这一点?(我还在和之间尝试了,但没有成功。)
问题内容: 我现在正在使用C#,并且正在使用JSON.Net将JSON字符串解析为C#对象。我的问题的一部分是我得到了一些像这样的字符串: 当我尝试使用进行反序列化时,它将引发异常。 我想知道将这个较大的字符串拆分为较小的json字符串的最佳方法是什么。 我正在考虑遍历字符串并匹配“级别0”的花括号。这似乎是个好主意吗?还是有更好的方法来做到这一点? 问题答案: 您可以将标志设置为true来使用a
问题内容: 我有一个包含标记的字符串列表。 令牌是: {ARG:token_name}。 我也有标记的哈希图,其中key是标记,value是我要用来替换标记的值。 当我使用“ replaceAll”方法时,出现错误: java.util.regex.PatternSyntaxException:非法重复 我的代码是这样的: 并且valueFromHashMap包含{和}。 我将此哈希图作为参数。