EscapeImplicitBackslashesFixerTest.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of PHP CS Fixer.
  5. *
  6. * (c) Fabien Potencier <fabien@symfony.com>
  7. * Dariusz Rumiński <dariusz.ruminski@gmail.com>
  8. *
  9. * This source file is subject to the MIT license that is bundled
  10. * with this source code in the file LICENSE.
  11. */
  12. namespace PhpCsFixer\Tests\Fixer\StringNotation;
  13. use PhpCsFixer\Tests\Test\AbstractFixerTestCase;
  14. /**
  15. * @author Filippo Tessarotto <zoeslam@gmail.com>
  16. *
  17. * @internal
  18. *
  19. * @covers \PhpCsFixer\Fixer\StringNotation\EscapeImplicitBackslashesFixer
  20. */
  21. final class EscapeImplicitBackslashesFixerTest extends AbstractFixerTestCase
  22. {
  23. /**
  24. * @param array<string, mixed> $configuration
  25. *
  26. * @dataProvider provideFixCases
  27. */
  28. public function testFix(string $expected, ?string $input = null, array $configuration = []): void
  29. {
  30. $this->fixer->configure($configuration);
  31. $this->doTest($expected, $input);
  32. }
  33. public static function provideFixCases(): iterable
  34. {
  35. return [
  36. [
  37. <<<'EOF'
  38. <?php $var = 'String (\\\'\r\n\x0) for My\Prefix\\';
  39. EOF
  40. ,
  41. ],
  42. [
  43. <<<'EOF'
  44. <?php $var = 'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  45. EOF
  46. ,
  47. <<<'EOF'
  48. <?php $var = 'String (\\\'\r\n\x0) for My\Prefix\\';
  49. EOF
  50. ,
  51. ['single_quoted' => true],
  52. ],
  53. [
  54. <<<'EOF'
  55. <?php
  56. $var = "\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  57. $var = "\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  58. $var = "$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  59. $var = <<<HEREDOC_SYNTAX
  60. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  61. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  62. \\"
  63. \\'
  64. \\8\\9
  65. \\xZ
  66. \\u
  67. HEREDOC_SYNTAX;
  68. $var = <<<HEREDOC_SYNTAX
  69. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  70. HEREDOC_SYNTAX;
  71. $var = <<<'NOWDOC_SYNTAX'
  72. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  73. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  74. \'
  75. \8\9
  76. \xZ
  77. \u
  78. NOWDOC_SYNTAX;
  79. EOF
  80. ,
  81. <<<'EOF'
  82. <?php
  83. $var = "\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  84. $var = "\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  85. $var = "$foo \A \a \' \8\9 \xZ \u ${bar}";
  86. $var = <<<HEREDOC_SYNTAX
  87. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  88. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  89. \"
  90. \'
  91. \8\9
  92. \xZ
  93. \u
  94. HEREDOC_SYNTAX;
  95. $var = <<<HEREDOC_SYNTAX
  96. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  97. HEREDOC_SYNTAX;
  98. $var = <<<'NOWDOC_SYNTAX'
  99. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  100. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  101. \'
  102. \8\9
  103. \xZ
  104. \u
  105. NOWDOC_SYNTAX;
  106. EOF
  107. ,
  108. ],
  109. [
  110. <<<'EOF'
  111. <?php
  112. $var = "\e\f\n\r\t\v \\ \$ \"";
  113. $var = "$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  114. $var = <<<HEREDOC_SYNTAX
  115. \e\f\n\r\t\v \\ \$
  116. HEREDOC_SYNTAX;
  117. $var = <<<HEREDOC_SYNTAX
  118. $foo \e\f\n\r\t\v \\ \$ ${bar}
  119. HEREDOC_SYNTAX;
  120. EOF
  121. ,
  122. ],
  123. [
  124. <<<'EOF'
  125. <?php
  126. $var = "\0 \00 \000 \0000 \00000";
  127. $var = "$foo \0 \00 \000 \0000 \00000 ${bar}";
  128. $var = <<<HEREDOC_SYNTAX
  129. \0 \00 \000 \0000 \00000
  130. HEREDOC_SYNTAX;
  131. $var = <<<HEREDOC_SYNTAX
  132. $foo \0 \00 \000 \0000 \00000 ${bar}
  133. HEREDOC_SYNTAX;
  134. EOF
  135. ,
  136. ],
  137. [
  138. <<<'EOF'
  139. <?php
  140. $var = "\xA \x99 \u{0}";
  141. $var = "$foo \xA \x99 \u{0} ${bar}";
  142. $var = <<<HEREDOC_SYNTAX
  143. \xA \x99 \u{0}
  144. HEREDOC_SYNTAX;
  145. $var = <<<HEREDOC_SYNTAX
  146. $foo \xA \x99 \u{0} ${bar}
  147. HEREDOC_SYNTAX;
  148. EOF
  149. ,
  150. ],
  151. [
  152. <<<'EOF'
  153. <?php
  154. $var = 'backslash \\ already escaped';
  155. $var = 'code coverage';
  156. $var = "backslash \\ already escaped";
  157. $var = "code coverage";
  158. $var = <<<HEREDOC_SYNTAX
  159. backslash \\ already escaped
  160. HEREDOC_SYNTAX;
  161. $var = <<<HEREDOC_SYNTAX
  162. code coverage
  163. HEREDOC_SYNTAX;
  164. $var = <<<'NOWDOC_SYNTAX'
  165. backslash \\ already escaped
  166. NOWDOC_SYNTAX;
  167. $var = <<<'NOWDOC_SYNTAX'
  168. code coverage
  169. NOWDOC_SYNTAX;
  170. EOF
  171. ,
  172. ],
  173. [
  174. <<<'EOF'
  175. <?php
  176. $var = "\A\a \' \8\9 \xZ \u";
  177. $var = "$foo \A\a \' \8\9 \xZ \u ${bar}";
  178. EOF
  179. ,
  180. null,
  181. ['double_quoted' => false],
  182. ],
  183. [
  184. <<<'EOF'
  185. <?php
  186. $var = <<<HEREDOC_SYNTAX
  187. \A\Z
  188. \a\z
  189. \'
  190. \8\9
  191. \xZ
  192. \u
  193. HEREDOC_SYNTAX;
  194. $var = <<<HEREDOC_SYNTAX
  195. $foo
  196. \A\Z
  197. \a\z
  198. \'
  199. \8\9
  200. \xZ
  201. \u
  202. ${bar}
  203. HEREDOC_SYNTAX;
  204. EOF
  205. ,
  206. null,
  207. ['heredoc_syntax' => false],
  208. ],
  209. [
  210. <<<'EOF'
  211. <?php $var = b'String (\\\'\r\n\x0) for My\Prefix\\';
  212. EOF
  213. ,
  214. ],
  215. [
  216. <<<'EOF'
  217. <?php $var = b'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  218. EOF
  219. ,
  220. <<<'EOF'
  221. <?php $var = b'String (\\\'\r\n\x0) for My\Prefix\\';
  222. EOF
  223. ,
  224. ['single_quoted' => true],
  225. ],
  226. [
  227. <<<'EOF'
  228. <?php
  229. $var = b"\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  230. $var = b"\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  231. $var = b"$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  232. $var = b<<<HEREDOC_SYNTAX
  233. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  234. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  235. \\"
  236. \\'
  237. \\8\\9
  238. \\xZ
  239. \\u
  240. HEREDOC_SYNTAX;
  241. $var = b<<<HEREDOC_SYNTAX
  242. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  243. HEREDOC_SYNTAX;
  244. $var = b<<<'NOWDOC_SYNTAX'
  245. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  246. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  247. \'
  248. \8\9
  249. \xZ
  250. \u
  251. NOWDOC_SYNTAX;
  252. EOF
  253. ,
  254. <<<'EOF'
  255. <?php
  256. $var = b"\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  257. $var = b"\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  258. $var = b"$foo \A \a \' \8\9 \xZ \u ${bar}";
  259. $var = b<<<HEREDOC_SYNTAX
  260. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  261. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  262. \"
  263. \'
  264. \8\9
  265. \xZ
  266. \u
  267. HEREDOC_SYNTAX;
  268. $var = b<<<HEREDOC_SYNTAX
  269. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  270. HEREDOC_SYNTAX;
  271. $var = b<<<'NOWDOC_SYNTAX'
  272. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  273. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  274. \'
  275. \8\9
  276. \xZ
  277. \u
  278. NOWDOC_SYNTAX;
  279. EOF
  280. ,
  281. ],
  282. [
  283. <<<'EOF'
  284. <?php
  285. $var = b"\e\f\n\r\t\v \\ \$ \"";
  286. $var = b"$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  287. $var = b<<<HEREDOC_SYNTAX
  288. \e\f\n\r\t\v \\ \$
  289. HEREDOC_SYNTAX;
  290. $var = b<<<HEREDOC_SYNTAX
  291. $foo \e\f\n\r\t\v \\ \$ ${bar}
  292. HEREDOC_SYNTAX;
  293. EOF
  294. ,
  295. ],
  296. [
  297. <<<'EOF'
  298. <?php
  299. $var = b"\0 \00 \000 \0000 \00000";
  300. $var = b"$foo \0 \00 \000 \0000 \00000 ${bar}";
  301. $var = b<<<HEREDOC_SYNTAX
  302. \0 \00 \000 \0000 \00000
  303. HEREDOC_SYNTAX;
  304. $var = b<<<HEREDOC_SYNTAX
  305. $foo \0 \00 \000 \0000 \00000 ${bar}
  306. HEREDOC_SYNTAX;
  307. EOF
  308. ,
  309. ],
  310. [
  311. <<<'EOF'
  312. <?php
  313. $var = b"\xA \x99 \u{0}";
  314. $var = b"$foo \xA \x99 \u{0} ${bar}";
  315. $var = b<<<HEREDOC_SYNTAX
  316. \xA \x99 \u{0}
  317. HEREDOC_SYNTAX;
  318. $var = b<<<HEREDOC_SYNTAX
  319. $foo \xA \x99 \u{0} ${bar}
  320. HEREDOC_SYNTAX;
  321. EOF
  322. ,
  323. ],
  324. [
  325. <<<'EOF'
  326. <?php
  327. $var = b'backslash \\ already escaped';
  328. $var = b'code coverage';
  329. $var = b"backslash \\ already escaped";
  330. $var = b"code coverage";
  331. $var = b<<<HEREDOC_SYNTAX
  332. backslash \\ already escaped
  333. HEREDOC_SYNTAX;
  334. $var = b<<<HEREDOC_SYNTAX
  335. code coverage
  336. HEREDOC_SYNTAX;
  337. $var = b<<<'NOWDOC_SYNTAX'
  338. backslash \\ already escaped
  339. NOWDOC_SYNTAX;
  340. $var = b<<<'NOWDOC_SYNTAX'
  341. code coverage
  342. NOWDOC_SYNTAX;
  343. EOF
  344. ,
  345. ],
  346. [
  347. <<<'EOF'
  348. <?php
  349. $var = b"\A\a \' \8\9 \xZ \u";
  350. $var = b"$foo \A\a \' \8\9 \xZ \u ${bar}";
  351. EOF
  352. ,
  353. null,
  354. ['double_quoted' => false],
  355. ],
  356. [
  357. <<<'EOF'
  358. <?php
  359. $var = b<<<HEREDOC_SYNTAX
  360. \A\Z
  361. \a\z
  362. \'
  363. \8\9
  364. \xZ
  365. \u
  366. HEREDOC_SYNTAX;
  367. $var = b<<<HEREDOC_SYNTAX
  368. $foo
  369. \A\Z
  370. \a\z
  371. \'
  372. \8\9
  373. \xZ
  374. \u
  375. ${bar}
  376. HEREDOC_SYNTAX;
  377. EOF
  378. ,
  379. null,
  380. ['heredoc_syntax' => false],
  381. ],
  382. [
  383. <<<'EOF'
  384. <?php $var = B'String (\\\'\r\n\x0) for My\Prefix\\';
  385. EOF
  386. ,
  387. ],
  388. [
  389. <<<'EOF'
  390. <?php $var = B'String (\\\'\\r\\n\\x0) for My\\Prefix\\';
  391. EOF
  392. ,
  393. <<<'EOF'
  394. <?php $var = B'String (\\\'\r\n\x0) for My\Prefix\\';
  395. EOF
  396. ,
  397. ['single_quoted' => true],
  398. ],
  399. [
  400. <<<'EOF'
  401. <?php
  402. $var = B"\\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z";
  403. $var = B"\\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z \\' \\8\\9 \\xZ \\u";
  404. $var = B"$foo \\A \\a \\' \\8\\9 \\xZ \\u ${bar}";
  405. $var = B<<<HEREDOC_SYNTAX
  406. \\A\\B\\C\\D\\E\\F\\G\\H\\I\\J\\K\\L\\M\\N\\O\\P\\Q\\R\\S\\T\\U\\V\\W\\X\\Y\\Z
  407. \\a\\b\\c\\d\\g\\h\\i\\j\\k\\l\\m\\o\\p\\q\\s\\w\\y\\z
  408. \\"
  409. \\'
  410. \\8\\9
  411. \\xZ
  412. \\u
  413. HEREDOC_SYNTAX;
  414. $var = B<<<HEREDOC_SYNTAX
  415. $foo \\A \\a \\" \\' \\8\\9 \\xZ \\u ${bar}
  416. HEREDOC_SYNTAX;
  417. $var = B<<<'NOWDOC_SYNTAX'
  418. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  419. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  420. \'
  421. \8\9
  422. \xZ
  423. \u
  424. NOWDOC_SYNTAX;
  425. EOF
  426. ,
  427. <<<'EOF'
  428. <?php
  429. $var = B"\A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z";
  430. $var = B"\a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z \' \8\9 \xZ \u";
  431. $var = B"$foo \A \a \' \8\9 \xZ \u ${bar}";
  432. $var = B<<<HEREDOC_SYNTAX
  433. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  434. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  435. \"
  436. \'
  437. \8\9
  438. \xZ
  439. \u
  440. HEREDOC_SYNTAX;
  441. $var = B<<<HEREDOC_SYNTAX
  442. $foo \A \a \" \' \8\9 \xZ \u ${bar}
  443. HEREDOC_SYNTAX;
  444. $var = B<<<'NOWDOC_SYNTAX'
  445. \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  446. \a\b\c\d\g\h\i\j\k\l\m\o\p\q\s\w\y\z
  447. \'
  448. \8\9
  449. \xZ
  450. \u
  451. NOWDOC_SYNTAX;
  452. EOF
  453. ,
  454. ],
  455. [
  456. <<<'EOF'
  457. <?php
  458. $var = B"\e\f\n\r\t\v \\ \$ \"";
  459. $var = B"$foo \e\f\n\r\t\v \\ \$ \" ${bar}";
  460. $var = B<<<HEREDOC_SYNTAX
  461. \e\f\n\r\t\v \\ \$
  462. HEREDOC_SYNTAX;
  463. $var = B<<<HEREDOC_SYNTAX
  464. $foo \e\f\n\r\t\v \\ \$ ${bar}
  465. HEREDOC_SYNTAX;
  466. EOF
  467. ,
  468. ],
  469. [
  470. <<<'EOF'
  471. <?php
  472. $var = B"\0 \00 \000 \0000 \00000";
  473. $var = B"$foo \0 \00 \000 \0000 \00000 ${bar}";
  474. $var = B<<<HEREDOC_SYNTAX
  475. \0 \00 \000 \0000 \00000
  476. HEREDOC_SYNTAX;
  477. $var = B<<<HEREDOC_SYNTAX
  478. $foo \0 \00 \000 \0000 \00000 ${bar}
  479. HEREDOC_SYNTAX;
  480. EOF
  481. ,
  482. ],
  483. [
  484. <<<'EOF'
  485. <?php
  486. $var = B"\xA \x99 \u{0}";
  487. $var = B"$foo \xA \x99 \u{0} ${bar}";
  488. $var = B<<<HEREDOC_SYNTAX
  489. \xA \x99 \u{0}
  490. HEREDOC_SYNTAX;
  491. $var = B<<<HEREDOC_SYNTAX
  492. $foo \xA \x99 \u{0} ${bar}
  493. HEREDOC_SYNTAX;
  494. EOF
  495. ,
  496. ],
  497. [
  498. <<<'EOF'
  499. <?php
  500. $var = B'backslash \\ already escaped';
  501. $var = B'code coverage';
  502. $var = B"backslash \\ already escaped";
  503. $var = B"code coverage";
  504. $var = B<<<HEREDOC_SYNTAX
  505. backslash \\ already escaped
  506. HEREDOC_SYNTAX;
  507. $var = B<<<HEREDOC_SYNTAX
  508. code coverage
  509. HEREDOC_SYNTAX;
  510. $var = B<<<'NOWDOC_SYNTAX'
  511. backslash \\ already escaped
  512. NOWDOC_SYNTAX;
  513. $var = B<<<'NOWDOC_SYNTAX'
  514. code coverage
  515. NOWDOC_SYNTAX;
  516. EOF
  517. ,
  518. ],
  519. [
  520. <<<'EOF'
  521. <?php
  522. $var = B"\A\a \' \8\9 \xZ \u";
  523. $var = B"$foo \A\a \' \8\9 \xZ \u ${bar}";
  524. EOF
  525. ,
  526. null,
  527. ['double_quoted' => false],
  528. ],
  529. [
  530. <<<'EOF'
  531. <?php
  532. $var = B<<<HEREDOC_SYNTAX
  533. \A\Z
  534. \a\z
  535. \'
  536. \8\9
  537. \xZ
  538. \u
  539. HEREDOC_SYNTAX;
  540. $var = B<<<HEREDOC_SYNTAX
  541. $foo
  542. \A\Z
  543. \a\z
  544. \'
  545. \8\9
  546. \xZ
  547. \u
  548. ${bar}
  549. HEREDOC_SYNTAX;
  550. EOF
  551. ,
  552. null,
  553. ['heredoc_syntax' => false],
  554. ],
  555. [
  556. <<<'EOF'
  557. <?php
  558. $var = "\\bar";
  559. $var = "\\bar";
  560. $var = "\\\\bar";
  561. $var = "\\\\bar";
  562. $var = "\\\\\\bar";
  563. $var = "\\\\\\bar";
  564. EOF
  565. ,
  566. <<<'EOF'
  567. <?php
  568. $var = "\bar";
  569. $var = "\\bar";
  570. $var = "\\\bar";
  571. $var = "\\\\bar";
  572. $var = "\\\\\bar";
  573. $var = "\\\\\\bar";
  574. EOF
  575. ,
  576. ],
  577. [
  578. <<<'EOF'
  579. <?php
  580. $var = '\\bar';
  581. $var = '\\bar';
  582. $var = '\\\\bar';
  583. $var = '\\\\bar';
  584. $var = '\\\\\\bar';
  585. $var = '\\\\\\bar';
  586. EOF
  587. ,
  588. <<<'EOF'
  589. <?php
  590. $var = '\bar';
  591. $var = '\\bar';
  592. $var = '\\\bar';
  593. $var = '\\\\bar';
  594. $var = '\\\\\bar';
  595. $var = '\\\\\\bar';
  596. EOF
  597. ,
  598. ['single_quoted' => true],
  599. ],
  600. [
  601. <<<'EOF'
  602. <?php
  603. $var = <<<TXT
  604. \\bar
  605. \\bar
  606. \\\\bar
  607. \\\\bar
  608. \\\\\\bar
  609. \\\\\\bar
  610. TXT;
  611. EOF
  612. ,
  613. <<<'EOF'
  614. <?php
  615. $var = <<<TXT
  616. \bar
  617. \\bar
  618. \\\bar
  619. \\\\bar
  620. \\\\\bar
  621. \\\\\\bar
  622. TXT;
  623. EOF
  624. ,
  625. ],
  626. [
  627. <<<'EOF'
  628. <?php
  629. $var = <<<'TXT'
  630. \bar
  631. \\bar
  632. \\\bar
  633. \\\\bar
  634. \\\\\bar
  635. \\\\\\bar
  636. TXT;
  637. EOF
  638. ,
  639. ],
  640. ];
  641. }
  642. }