Bug #81635 [Opn->Nab]: When curly braces are escaped, the back-slash isn't removed \{
| From: | cmb@php.net | Date: | Thu, 18 Nov 2021 11:21:24 +0000 |
| Subject: | Bug #81635 [Opn->Nab]: When curly braces are escaped, the back-slash isn't removed \{ | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-237840@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81635&edit=1
ID: 81635
Updated by: cmb@php.net
Reported by: shealavington at gmail dot com
Summary: When curly braces are escaped, the back-slash isn't
removed \{
-Status: Open
+Status: Not a bug
Type: Bug
-Package: *General Issues
+Package: Scripting Engine problem
Operating System: Windows 10
PHP Version: 8.0.12
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
The docs do not list \$ as escape sequence[1]. They are actually
very explicit about that[2]:
| Since { can not be escaped, [â¦]
What you're looking for is <https://3v4l.org/hndfP>.
[1] <https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double>
[2] <https://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex>
Previous Comments:
------------------------------------------------------------------------
[2021-11-18 11:06:06] shealavington at gmail dot com
Description:
------------
When curly braces are escaped within a string "", the back-slash isn't removed \{.
For example
"hello\{$foo}" is outputting hello\{bar} instead of
hello{bar}
Test script:
---------------
<?php
$foo = "bar";
$test_script = "hello\{$foo}"
//- Explanation output below.
echo "If \ is the escape character, why are the escaped characters and the escape
character both shown?<br>";
echo "Res: <b>c:\path\hello\{$foo}</b><br>";
echo "Expected:
<b>c:\path\hello"."{"."$foo}</b><br>";
echo "<br>Notice how in this example, I haven't used a \ but the
{} characters are gone when not escaped?<br>";
echo "Res: <b>c:\path\hello{$foo}</b><br>";
echo "<br>If I use \ n, it replaces the \, I don't see
\ n like I do in the first example above.<br>";
echo "Res: <b>c:\path\hello\note\{$foo}</b><br>";
Expected result:
----------------
hello{bar}
Actual result:
--------------
hello\{bar}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81635&edit=1