Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** mlang langstring tests.** Based on local_amos mlang_langstring tests.** @package tool_customlang* @copyright 2020 Ferran Recio <ferran@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace tool_customlang\local\mlang;use advanced_testcase;use moodle_exception;/*** Langstring tests.** @package tool_customlang* @copyright 2020 Ferran Recio <ferran@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class langstring_test extends advanced_testcase {/*** Sanity 1.x string* - all variables but $a placeholders must be escaped because the string is eval'ed* - all ' and " must be escaped* - all single % must be converted into %% for backwards compatibility** @dataProvider fix_syntax_data* @param string $text the text to test* @param int $version the lang package version (1 or 2)* @param int|null $fromversion the version to convert (null for none)* @param string $expected the expected result**/public function test_fix_syntax(string $text, int $version, ?int $fromversion, string $expected): void {$this->assertEquals(langstring::fix_syntax($text, $version, $fromversion), $expected);}/*** Data provider for the test_parse.** @return array*/public function fix_syntax_data(): array {return [// Syntax sanity v1 strings.['No change', 1, null,'No change'],['Completed 100% of work', 1, null,'Completed 100%% of work'],['Completed 100%% of work', 1, null,'Completed 100%% of work'],["Windows\r\nsucks", 1, null,"Windows\nsucks"],["Linux\nsucks", 1, null,"Linux\nsucks"],["Mac\rsucks", 1, null,"Mac\nsucks"],["LINE TABULATION\x0Bnewline", 1, null,"LINE TABULATION\nnewline"],["FORM FEED\x0Cnewline", 1, null,"FORM FEED\nnewline"],["END OF TRANSMISSION BLOCK\x17newline", 1, null,"END OF TRANSMISSION BLOCK\nnewline"],["END OF MEDIUM\x19newline", 1, null,"END OF MEDIUM\nnewline"],["SUBSTITUTE\x1Anewline", 1, null,"SUBSTITUTE\nnewline"],["BREAK PERMITTED HERE\xC2\x82newline", 1, null,"BREAK PERMITTED HERE\nnewline"],["NEXT LINE\xC2\x85newline", 1, null,"NEXT LINE\nnewline"],["START OF STRING\xC2\x98newline", 1, null,"START OF STRING\nnewline"],["STRING TERMINATOR\xC2\x9Cnewline", 1, null,"STRING TERMINATOR\nnewline"],["Unicode Zl\xE2\x80\xA8newline", 1, null,"Unicode Zl\nnewline"],["Unicode Zp\xE2\x80\xA9newline", 1, null,"Unicode Zp\nnewline"],["Empty\n\n\n\n\n\nlines", 1, null,"Empty\n\nlines"],["Trailing \n whitespace \t \nat \nmultilines ", 1, null,"Trailing\n whitespace\nat\nmultilines"],['Escape $variable names', 1, null,'Escape \$variable names'],['Escape $alike names', 1, null,'Escape \$alike names'],['String $a placeholder', 1, null,'String $a placeholder'],['Escaped \$a', 1, null,'Escaped \$a'],['Wrapped {$a}', 1, null,'Wrapped {$a}'],['Trailing $a', 1, null,'Trailing $a'],['$a leading', 1, null,'$a leading'],['Hit $a-times', 1, null,'Hit $a-times'], // This is placeholder.['This is $a_book', 1, null,'This is \$a_book'], // This is not a place holder.['Bye $a, ttyl', 1, null,'Bye $a, ttyl'],['Object $a->foo placeholder', 1, null,'Object $a->foo placeholder'],['Trailing $a->bar', 1, null,'Trailing $a->bar'],['<strong>AMOS</strong>', 1, null,'<strong>AMOS</strong>'],['<a href="http://localhost">AMOS</a>', 1, null,'<a href=\"http://localhost\">AMOS</a>'],['<a href=\"http://localhost\">AMOS</a>', 1, null,'<a href=\"http://localhost\">AMOS</a>'],["'Murder!', she wrote", 1, null,"'Murder!', she wrote"], // Will be escaped by var_export().["\t Trim Hunter \t\t", 1, null,'Trim Hunter'],['Delete role "$a->role"?', 1, null,'Delete role \"$a->role\"?'],['Delete role \"$a->role\"?', 1, null,'Delete role \"$a->role\"?'],["Delete ASCII\0 NULL control character", 1, null,'Delete ASCII NULL control character'],["Delete ASCII\x05 ENQUIRY control character", 1, null,'Delete ASCII ENQUIRY control character'],["Delete ASCII\x06 ACKNOWLEDGE control character", 1, null,'Delete ASCII ACKNOWLEDGE control character'],["Delete ASCII\x07 BELL control character", 1, null,'Delete ASCII BELL control character'],["Delete ASCII\x0E SHIFT OUT control character", 1, null,'Delete ASCII SHIFT OUT control character'],["Delete ASCII\x0F SHIFT IN control character", 1, null,'Delete ASCII SHIFT IN control character'],["Delete ASCII\x10 DATA LINK ESCAPE control character", 1, null,'Delete ASCII DATA LINK ESCAPE control character'],["Delete ASCII\x11 DEVICE CONTROL ONE control character", 1, null,'Delete ASCII DEVICE CONTROL ONE control character'],["Delete ASCII\x12 DEVICE CONTROL TWO control character", 1, null,'Delete ASCII DEVICE CONTROL TWO control character'],["Delete ASCII\x13 DEVICE CONTROL THREE control character", 1, null,'Delete ASCII DEVICE CONTROL THREE control character'],["Delete ASCII\x14 DEVICE CONTROL FOUR control character", 1, null,'Delete ASCII DEVICE CONTROL FOUR control character'],["Delete ASCII\x15 NEGATIVE ACKNOWLEDGE control character", 1, null,'Delete ASCII NEGATIVE ACKNOWLEDGE control character'],["Delete ASCII\x16 SYNCHRONOUS IDLE control character", 1, null,'Delete ASCII SYNCHRONOUS IDLE control character'],["Delete ASCII\x1B ESCAPE control character", 1, null,'Delete ASCII ESCAPE control character'],["Delete ASCII\x7F DELETE control character", 1, null,'Delete ASCII DELETE control character'],["Delete ISO 8859\xC2\x80 PADDING CHARACTER control character", 1, null,'Delete ISO 8859 PADDING CHARACTER control character'],["Delete ISO 8859\xC2\x81 HIGH OCTET PRESET control character", 1, null,'Delete ISO 8859 HIGH OCTET PRESET control character'],["Delete ISO 8859\xC2\x83 NO BREAK HERE control character", 1, null,'Delete ISO 8859 NO BREAK HERE control character'],["Delete ISO 8859\xC2\x84 INDEX control character", 1, null,'Delete ISO 8859 INDEX control character'],["Delete ISO 8859\xC2\x86 START OF SELECTED AREA control character", 1, null,'Delete ISO 8859 START OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x87 END OF SELECTED AREA control character", 1, null,'Delete ISO 8859 END OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x88 CHARACTER TABULATION SET control character", 1, null,'Delete ISO 8859 CHARACTER TABULATION SET control character'],["Delete ISO 8859\xC2\x89 CHARACTER TABULATION WITH JUSTIFICATION control character", 1, null,'Delete ISO 8859 CHARACTER TABULATION WITH JUSTIFICATION control character'],["Delete ISO 8859\xC2\x8A LINE TABULATION SET control character", 1, null,'Delete ISO 8859 LINE TABULATION SET control character'],["Delete ISO 8859\xC2\x8B PARTIAL LINE FORWARD control character", 1, null,'Delete ISO 8859 PARTIAL LINE FORWARD control character'],["Delete ISO 8859\xC2\x8C PARTIAL LINE BACKWARD control character", 1, null,'Delete ISO 8859 PARTIAL LINE BACKWARD control character'],["Delete ISO 8859\xC2\x8D REVERSE LINE FEED control character", 1, null,'Delete ISO 8859 REVERSE LINE FEED control character'],["Delete ISO 8859\xC2\x8E SINGLE SHIFT TWO control character", 1, null,'Delete ISO 8859 SINGLE SHIFT TWO control character'],["Delete ISO 8859\xC2\x8F SINGLE SHIFT THREE control character", 1, null,'Delete ISO 8859 SINGLE SHIFT THREE control character'],["Delete ISO 8859\xC2\x90 DEVICE CONTROL STRING control character", 1, null,'Delete ISO 8859 DEVICE CONTROL STRING control character'],["Delete ISO 8859\xC2\x91 PRIVATE USE ONE control character", 1, null,'Delete ISO 8859 PRIVATE USE ONE control character'],["Delete ISO 8859\xC2\x92 PRIVATE USE TWO control character", 1, null,'Delete ISO 8859 PRIVATE USE TWO control character'],["Delete ISO 8859\xC2\x93 SET TRANSMIT STATE control character", 1, null,'Delete ISO 8859 SET TRANSMIT STATE control character'],["Delete ISO 8859\xC2\x95 MESSAGE WAITING control character", 1, null,'Delete ISO 8859 MESSAGE WAITING control character'],["Delete ISO 8859\xC2\x96 START OF GUARDED AREA control character", 1, null,'Delete ISO 8859 START OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x97 END OF GUARDED AREA control character", 1, null,'Delete ISO 8859 END OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x99 SINGLE GRAPHIC CHARACTER INTRODUCER control character", 1, null,'Delete ISO 8859 SINGLE GRAPHIC CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9A SINGLE CHARACTER INTRODUCER control character", 1, null,'Delete ISO 8859 SINGLE CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9B CONTROL SEQUENCE INTRODUCER control character", 1, null,'Delete ISO 8859 CONTROL SEQUENCE INTRODUCER control character'],["Delete ISO 8859\xC2\x9D OPERATING SYSTEM COMMAND control character", 1, null,'Delete ISO 8859 OPERATING SYSTEM COMMAND control character'],["Delete ISO 8859\xC2\x9E PRIVACY MESSAGE control character", 1, null,'Delete ISO 8859 PRIVACY MESSAGE control character'],["Delete ISO 8859\xC2\x9F APPLICATION PROGRAM COMMAND control character", 1, null,'Delete ISO 8859 APPLICATION PROGRAM COMMAND control character'],["Delete Unicode\xE2\x80\x8B ZERO WIDTH SPACE control character", 1, null,'Delete Unicode ZERO WIDTH SPACE control character'],["Delete Unicode\xEF\xBB\xBF ZERO WIDTH NO-BREAK SPACE control character", 1, null,'Delete Unicode ZERO WIDTH NO-BREAK SPACE control character'],["Delete Unicode\xEF\xBF\xBD REPLACEMENT CHARACTER control character", 1, null,'Delete Unicode REPLACEMENT CHARACTER control character'],// Syntax sanity v2 strings.['No change', 2, null,'No change'],['Completed 100% of work', 2, null,'Completed 100% of work'],['%%%% HEADER %%%%', 2, null,'%%%% HEADER %%%%'], // Was not possible before.["Windows\r\nsucks", 2, null,"Windows\nsucks"],["Linux\nsucks", 2, null,"Linux\nsucks"],["Mac\rsucks", 2, null,"Mac\nsucks"],["LINE TABULATION\x0Bnewline", 2, null,"LINE TABULATION\nnewline"],["FORM FEED\x0Cnewline", 2, null,"FORM FEED\nnewline"],["END OF TRANSMISSION BLOCK\x17newline", 2, null,"END OF TRANSMISSION BLOCK\nnewline"],["END OF MEDIUM\x19newline", 2, null,"END OF MEDIUM\nnewline"],["SUBSTITUTE\x1Anewline", 2, null,"SUBSTITUTE\nnewline"],["BREAK PERMITTED HERE\xC2\x82newline", 2, null,"BREAK PERMITTED HERE\nnewline"],["NEXT LINE\xC2\x85newline", 2, null,"NEXT LINE\nnewline"],["START OF STRING\xC2\x98newline", 2, null,"START OF STRING\nnewline"],["STRING TERMINATOR\xC2\x9Cnewline", 2, null,"STRING TERMINATOR\nnewline"],["Unicode Zl\xE2\x80\xA8newline", 2, null,"Unicode Zl\nnewline"],["Unicode Zp\xE2\x80\xA9newline", 2, null,"Unicode Zp\nnewline"],["Empty\n\n\n\n\n\nlines", 2, null,"Empty\n\n\nlines"], // Now allows up to two empty lines.["Trailing \n whitespace\t\nat \nmultilines ", 2, null,"Trailing\n whitespace\nat\nmultilines"],['Do not escape $variable names', 2, null,'Do not escape $variable names'],['Do not escape $alike names', 2, null,'Do not escape $alike names'],['Not $a placeholder', 2, null,'Not $a placeholder'],['String {$a} placeholder', 2, null,'String {$a} placeholder'],['Trailing {$a}', 2, null,'Trailing {$a}'],['{$a} leading', 2, null,'{$a} leading'],['Trailing $a', 2, null,'Trailing $a'],['$a leading', 2, null,'$a leading'],['Not $a->foo placeholder', 2, null,'Not $a->foo placeholder'],['Object {$a->foo} placeholder', 2, null,'Object {$a->foo} placeholder'],['Trailing $a->bar', 2, null,'Trailing $a->bar'],['Invalid $a-> placeholder', 2, null,'Invalid $a-> placeholder'],['<strong>AMOS</strong>', 2, null,'<strong>AMOS</strong>'],["'Murder!', she wrote", 2, null,"'Murder!', she wrote"], // Will be escaped by var_export().["\t Trim Hunter \t\t", 2, null,'Trim Hunter'],['Delete role "$a->role"?', 2, null,'Delete role "$a->role"?'],['Delete role \"$a->role\"?', 2, null,'Delete role \"$a->role\"?'],["Delete ASCII\0 NULL control character", 2, null,'Delete ASCII NULL control character'],["Delete ASCII\x05 ENQUIRY control character", 2, null,'Delete ASCII ENQUIRY control character'],["Delete ASCII\x06 ACKNOWLEDGE control character", 2, null,'Delete ASCII ACKNOWLEDGE control character'],["Delete ASCII\x07 BELL control character", 2, null,'Delete ASCII BELL control character'],["Delete ASCII\x0E SHIFT OUT control character", 2, null,'Delete ASCII SHIFT OUT control character'],["Delete ASCII\x0F SHIFT IN control character", 2, null,'Delete ASCII SHIFT IN control character'],["Delete ASCII\x10 DATA LINK ESCAPE control character", 2, null,'Delete ASCII DATA LINK ESCAPE control character'],["Delete ASCII\x11 DEVICE CONTROL ONE control character", 2, null,'Delete ASCII DEVICE CONTROL ONE control character'],["Delete ASCII\x12 DEVICE CONTROL TWO control character", 2, null,'Delete ASCII DEVICE CONTROL TWO control character'],["Delete ASCII\x13 DEVICE CONTROL THREE control character", 2, null,'Delete ASCII DEVICE CONTROL THREE control character'],["Delete ASCII\x14 DEVICE CONTROL FOUR control character", 2, null,'Delete ASCII DEVICE CONTROL FOUR control character'],["Delete ASCII\x15 NEGATIVE ACKNOWLEDGE control character", 2, null,'Delete ASCII NEGATIVE ACKNOWLEDGE control character'],["Delete ASCII\x16 SYNCHRONOUS IDLE control character", 2, null,'Delete ASCII SYNCHRONOUS IDLE control character'],["Delete ASCII\x1B ESCAPE control character", 2, null,'Delete ASCII ESCAPE control character'],["Delete ASCII\x7F DELETE control character", 2, null,'Delete ASCII DELETE control character'],["Delete ISO 8859\xC2\x80 PADDING CHARACTER control character", 2, null,'Delete ISO 8859 PADDING CHARACTER control character'],["Delete ISO 8859\xC2\x81 HIGH OCTET PRESET control character", 2, null,'Delete ISO 8859 HIGH OCTET PRESET control character'],["Delete ISO 8859\xC2\x83 NO BREAK HERE control character", 2, null,'Delete ISO 8859 NO BREAK HERE control character'],["Delete ISO 8859\xC2\x84 INDEX control character", 2, null,'Delete ISO 8859 INDEX control character'],["Delete ISO 8859\xC2\x86 START OF SELECTED AREA control character", 2, null,'Delete ISO 8859 START OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x87 END OF SELECTED AREA control character", 2, null,'Delete ISO 8859 END OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x88 CHARACTER TABULATION SET control character", 2, null,'Delete ISO 8859 CHARACTER TABULATION SET control character'],["Delete ISO 8859\xC2\x89 CHARACTER TABULATION WITH JUSTIFICATION control character", 2, null,'Delete ISO 8859 CHARACTER TABULATION WITH JUSTIFICATION control character'],["Delete ISO 8859\xC2\x8A LINE TABULATION SET control character", 2, null,'Delete ISO 8859 LINE TABULATION SET control character'],["Delete ISO 8859\xC2\x8B PARTIAL LINE FORWARD control character", 2, null,'Delete ISO 8859 PARTIAL LINE FORWARD control character'],["Delete ISO 8859\xC2\x8C PARTIAL LINE BACKWARD control character", 2, null,'Delete ISO 8859 PARTIAL LINE BACKWARD control character'],["Delete ISO 8859\xC2\x8D REVERSE LINE FEED control character", 2, null,'Delete ISO 8859 REVERSE LINE FEED control character'],["Delete ISO 8859\xC2\x8E SINGLE SHIFT TWO control character", 2, null,'Delete ISO 8859 SINGLE SHIFT TWO control character'],["Delete ISO 8859\xC2\x8F SINGLE SHIFT THREE control character", 2, null,'Delete ISO 8859 SINGLE SHIFT THREE control character'],["Delete ISO 8859\xC2\x90 DEVICE CONTROL STRING control character", 2, null,'Delete ISO 8859 DEVICE CONTROL STRING control character'],["Delete ISO 8859\xC2\x91 PRIVATE USE ONE control character", 2, null,'Delete ISO 8859 PRIVATE USE ONE control character'],["Delete ISO 8859\xC2\x92 PRIVATE USE TWO control character", 2, null,'Delete ISO 8859 PRIVATE USE TWO control character'],["Delete ISO 8859\xC2\x93 SET TRANSMIT STATE control character", 2, null,'Delete ISO 8859 SET TRANSMIT STATE control character'],["Delete ISO 8859\xC2\x95 MESSAGE WAITING control character", 2, null,'Delete ISO 8859 MESSAGE WAITING control character'],["Delete ISO 8859\xC2\x96 START OF GUARDED AREA control character", 2, null,'Delete ISO 8859 START OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x97 END OF GUARDED AREA control character", 2, null,'Delete ISO 8859 END OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x99 SINGLE GRAPHIC CHARACTER INTRODUCER control character", 2, null,'Delete ISO 8859 SINGLE GRAPHIC CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9A SINGLE CHARACTER INTRODUCER control character", 2, null,'Delete ISO 8859 SINGLE CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9B CONTROL SEQUENCE INTRODUCER control character", 2, null,'Delete ISO 8859 CONTROL SEQUENCE INTRODUCER control character'],["Delete ISO 8859\xC2\x9D OPERATING SYSTEM COMMAND control character", 2, null,'Delete ISO 8859 OPERATING SYSTEM COMMAND control character'],["Delete ISO 8859\xC2\x9E PRIVACY MESSAGE control character", 2, null,'Delete ISO 8859 PRIVACY MESSAGE control character'],["Delete ISO 8859\xC2\x9F APPLICATION PROGRAM COMMAND control character", 2, null,'Delete ISO 8859 APPLICATION PROGRAM COMMAND control character'],["Delete Unicode\xE2\x80\x8B ZERO WIDTH SPACE control character", 2, null,'Delete Unicode ZERO WIDTH SPACE control character'],["Delete Unicode\xEF\xBB\xBF ZERO WIDTH NO-BREAK SPACE control character", 2, null,'Delete Unicode ZERO WIDTH NO-BREAK SPACE control character'],["Delete Unicode\xEF\xBF\xBD REPLACEMENT CHARACTER control character", 2, null,'Delete Unicode REPLACEMENT CHARACTER control character'],// Conterting from v1 to v2.['No change', 2, 1,'No change'],['Completed 100% of work', 2, 1,'Completed 100% of work'],['Completed 100%% of work', 2, 1,'Completed 100% of work'],["Windows\r\nsucks", 2, 1,"Windows\nsucks"],["Linux\nsucks", 2, 1,"Linux\nsucks"],["Mac\rsucks", 2, 1,"Mac\nsucks"],["LINE TABULATION\x0Bnewline", 2, 1,"LINE TABULATION\nnewline"],["FORM FEED\x0Cnewline", 2, 1,"FORM FEED\nnewline"],["END OF TRANSMISSION BLOCK\x17newline", 2, 1,"END OF TRANSMISSION BLOCK\nnewline"],["END OF MEDIUM\x19newline", 2, 1,"END OF MEDIUM\nnewline"],["SUBSTITUTE\x1Anewline", 2, 1,"SUBSTITUTE\nnewline"],["BREAK PERMITTED HERE\xC2\x82newline", 2, 1,"BREAK PERMITTED HERE\nnewline"],["NEXT LINE\xC2\x85newline", 2, 1,"NEXT LINE\nnewline"],["START OF STRING\xC2\x98newline", 2, 1,"START OF STRING\nnewline"],["STRING TERMINATOR\xC2\x9Cnewline", 2, 1,"STRING TERMINATOR\nnewline"],["Unicode Zl\xE2\x80\xA8newline", 2, 1,"Unicode Zl\nnewline"],["Unicode Zp\xE2\x80\xA9newline", 2, 1,"Unicode Zp\nnewline"],["Empty\n\n\n\n\n\nlines", 2, 1,"Empty\n\n\nlines"],["Trailing \n whitespace\t\nat \nmultilines ", 2, 1,"Trailing\n whitespace\nat\nmultilines"],['Do not escape $variable names', 2, 1,'Do not escape $variable names'],['Do not escape \$variable names', 2, 1,'Do not escape $variable names'],['Do not escape $alike names', 2, 1,'Do not escape $alike names'],['Do not escape \$alike names', 2, 1,'Do not escape $alike names'],['Do not escape \$a names', 2, 1,'Do not escape $a names'],['String $a placeholder', 2, 1,'String {$a} placeholder'],['String {$a} placeholder', 2, 1,'String {$a} placeholder'],['Trailing $a', 2, 1,'Trailing {$a}'],['$a leading', 2, 1,'{$a} leading'],['$a', 2, 1,'{$a}'],['$a->single', 2, 1,'{$a->single}'],['Trailing $a->foobar', 2, 1,'Trailing {$a->foobar}'],['Trailing {$a}', 2, 1,'Trailing {$a}'],['Hit $a-times', 2, 1,'Hit {$a}-times'],['This is $a_book', 2, 1,'This is $a_book'],['Object $a->foo placeholder', 2, 1,'Object {$a->foo} placeholder'],['Object {$a->foo} placeholder', 2, 1,'Object {$a->foo} placeholder'],['Trailing $a->bar', 2, 1,'Trailing {$a->bar}'],['Trailing {$a->bar}', 2, 1,'Trailing {$a->bar}'],['Invalid $a-> placeholder', 2, 1,'Invalid {$a}-> placeholder'], // Weird but BC.['<strong>AMOS</strong>', 2, 1,'<strong>AMOS</strong>'],["'Murder!', she wrote", 2, 1,"'Murder!', she wrote"], // Will be escaped by var_export().["\'Murder!\', she wrote", 2, 1,"'Murder!', she wrote"], // Will be escaped by var_export().["\t Trim Hunter \t\t", 2, 1,'Trim Hunter'],['Delete role "$a->role"?', 2, 1,'Delete role "{$a->role}"?'],['Delete role \"$a->role\"?', 2, 1,'Delete role "{$a->role}"?'],['See $CFG->foo', 2, 1,'See $CFG->foo'],["Delete ASCII\0 NULL control character", 2, 1,'Delete ASCII NULL control character'],["Delete ASCII\x05 ENQUIRY control character", 2, 1,'Delete ASCII ENQUIRY control character'],["Delete ASCII\x06 ACKNOWLEDGE control character", 2, 1,'Delete ASCII ACKNOWLEDGE control character'],["Delete ASCII\x07 BELL control character", 2, 1,'Delete ASCII BELL control character'],["Delete ASCII\x0E SHIFT OUT control character", 2, 1,'Delete ASCII SHIFT OUT control character'],["Delete ASCII\x0F SHIFT IN control character", 2, 1,'Delete ASCII SHIFT IN control character'],["Delete ASCII\x10 DATA LINK ESCAPE control character", 2, 1,'Delete ASCII DATA LINK ESCAPE control character'],["Delete ASCII\x11 DEVICE CONTROL ONE control character", 2, 1,'Delete ASCII DEVICE CONTROL ONE control character'],["Delete ASCII\x12 DEVICE CONTROL TWO control character", 2, 1,'Delete ASCII DEVICE CONTROL TWO control character'],["Delete ASCII\x13 DEVICE CONTROL THREE control character", 2, 1,'Delete ASCII DEVICE CONTROL THREE control character'],["Delete ASCII\x14 DEVICE CONTROL FOUR control character", 2, 1,'Delete ASCII DEVICE CONTROL FOUR control character'],["Delete ASCII\x15 NEGATIVE ACKNOWLEDGE control character", 2, 1,'Delete ASCII NEGATIVE ACKNOWLEDGE control character'],["Delete ASCII\x16 SYNCHRONOUS IDLE control character", 2, 1,'Delete ASCII SYNCHRONOUS IDLE control character'],["Delete ASCII\x1B ESCAPE control character", 2, 1,'Delete ASCII ESCAPE control character'],["Delete ASCII\x7F DELETE control character", 2, 1,'Delete ASCII DELETE control character'],["Delete ISO 8859\xC2\x80 PADDING CHARACTER control character", 2, 1,'Delete ISO 8859 PADDING CHARACTER control character'],["Delete ISO 8859\xC2\x81 HIGH OCTET PRESET control character", 2, 1,'Delete ISO 8859 HIGH OCTET PRESET control character'],["Delete ISO 8859\xC2\x83 NO BREAK HERE control character", 2, 1,'Delete ISO 8859 NO BREAK HERE control character'],["Delete ISO 8859\xC2\x84 INDEX control character", 2, 1,'Delete ISO 8859 INDEX control character'],["Delete ISO 8859\xC2\x86 START OF SELECTED AREA control character", 2, 1,'Delete ISO 8859 START OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x87 END OF SELECTED AREA control character", 2, 1,'Delete ISO 8859 END OF SELECTED AREA control character'],["Delete ISO 8859\xC2\x88 CHARACTER TABULATION SET control character", 2, 1,'Delete ISO 8859 CHARACTER TABULATION SET control character'],["Delete ISO 8859\xC2\x89 CHARACTER TABULATION WITH JUSTIFICATION control character", 2, 1,'Delete ISO 8859 CHARACTER TABULATION WITH JUSTIFICATION control character'],["Delete ISO 8859\xC2\x8A LINE TABULATION SET control character", 2, 1,'Delete ISO 8859 LINE TABULATION SET control character'],["Delete ISO 8859\xC2\x8B PARTIAL LINE FORWARD control character", 2, 1,'Delete ISO 8859 PARTIAL LINE FORWARD control character'],["Delete ISO 8859\xC2\x8C PARTIAL LINE BACKWARD control character", 2, 1,'Delete ISO 8859 PARTIAL LINE BACKWARD control character'],["Delete ISO 8859\xC2\x8D REVERSE LINE FEED control character", 2, 1,'Delete ISO 8859 REVERSE LINE FEED control character'],["Delete ISO 8859\xC2\x8E SINGLE SHIFT TWO control character", 2, 1,'Delete ISO 8859 SINGLE SHIFT TWO control character'],["Delete ISO 8859\xC2\x8F SINGLE SHIFT THREE control character", 2, 1,'Delete ISO 8859 SINGLE SHIFT THREE control character'],["Delete ISO 8859\xC2\x90 DEVICE CONTROL STRING control character", 2, 1,'Delete ISO 8859 DEVICE CONTROL STRING control character'],["Delete ISO 8859\xC2\x91 PRIVATE USE ONE control character", 2, 1,'Delete ISO 8859 PRIVATE USE ONE control character'],["Delete ISO 8859\xC2\x92 PRIVATE USE TWO control character", 2, 1,'Delete ISO 8859 PRIVATE USE TWO control character'],["Delete ISO 8859\xC2\x93 SET TRANSMIT STATE control character", 2, 1,'Delete ISO 8859 SET TRANSMIT STATE control character'],["Delete ISO 8859\xC2\x95 MESSAGE WAITING control character", 2, 1,'Delete ISO 8859 MESSAGE WAITING control character'],["Delete ISO 8859\xC2\x96 START OF GUARDED AREA control character", 2, 1,'Delete ISO 8859 START OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x97 END OF GUARDED AREA control character", 2, 1,'Delete ISO 8859 END OF GUARDED AREA control character'],["Delete ISO 8859\xC2\x99 SINGLE GRAPHIC CHARACTER INTRODUCER control character", 2, 1,'Delete ISO 8859 SINGLE GRAPHIC CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9A SINGLE CHARACTER INTRODUCER control character", 2, 1,'Delete ISO 8859 SINGLE CHARACTER INTRODUCER control character'],["Delete ISO 8859\xC2\x9B CONTROL SEQUENCE INTRODUCER control character", 2, 1,'Delete ISO 8859 CONTROL SEQUENCE INTRODUCER control character'],["Delete ISO 8859\xC2\x9D OPERATING SYSTEM COMMAND control character", 2, 1,'Delete ISO 8859 OPERATING SYSTEM COMMAND control character'],["Delete ISO 8859\xC2\x9E PRIVACY MESSAGE control character", 2, 1,'Delete ISO 8859 PRIVACY MESSAGE control character'],["Delete ISO 8859\xC2\x9F APPLICATION PROGRAM COMMAND control character", 2, 1,'Delete ISO 8859 APPLICATION PROGRAM COMMAND control character'],["Delete Unicode\xE2\x80\x8B ZERO WIDTH SPACE control character", 2, 1,'Delete Unicode ZERO WIDTH SPACE control character'],["Delete Unicode\xEF\xBB\xBF ZERO WIDTH NO-BREAK SPACE control character", 2, 1,'Delete Unicode ZERO WIDTH NO-BREAK SPACE control character'],["Delete Unicode\xEF\xBF\xBD REPLACEMENT CHARACTER control character", 2, 1,'Delete Unicode REPLACEMENT CHARACTER control character'],];}}