Как я могу написать квадратную скобку в текстовый файл в PHP? - PullRequest
1 голос
/ 14 июня 2011

Я пытаюсь написать скрипт php, который будет генерировать множество новых страниц php, но я обнаружил, что не могу написать квадратную скобку.Когда я экранирую квадратную скобку так же, как и другие символы (например, [), на новую страницу записывается начальный \, в результате чего код не работает:

echo $row\['Value'\];

Когда я не экранируюскобка, страница терпит неудачу, и то же самое происходит, когда я пытаюсь заменить asc (91).

Я видел другие примеры, использующие код, такой как $ row-> Value, но я пробовал это, и это не такт работа.Если кто-нибудь может помочь мне вывести квадратные скобки или знает другой метод, с помощью которого я могу извлечь значение из строки, не используя его вообще, я был бы очень признателен

Ответы [ 4 ]

3 голосов
/ 14 июня 2011

Ваш эхо будет отображаться как ссылка на массив в PHP.Попробуйте это:

echo $row, "['Value'];"

при условии, что вы хотите, чтобы выводилось значение $ row, а не буквальный текст $row.Если вам нужен буквальный текст (например, вы пытаетесь создать PHP-скрипт на лету), то любой из них должен выполнить свою задачу:

echo '$row[\'Value\'];';
echo "\$row['Value'];";
2 голосов
/ 14 июня 2011

Как насчет этого:

echo sprintf("\$row['%s']", $value);  // either scenario
echo sprintf("%s['Value']", $row);  

Помните, что PHP автоматически анализирует строки в двойных кавычках (") и пытается найти переменные внутри.Таким образом, скобка вероятно не проблема, префикс переменной $ (в сочетании с анализатором), вероятно равен .

1 голос
/ 14 июня 2011

Вы говорите о генерации кода в своем вопросе, поэтому я ожидаю, что вы также захотите вывести оператор 'echo' в сгенерированном коде.Предполагая, что вы хотите сохранить вывод в файл, чтобы его можно было легко выполнить, вы хотите использовать что-то вроде fwrite или file_put_contents, я ожидаю.Вы должны думать о строках, что может быть немного сложнее, когда вы видите код.

Примерно так должно работать:

fwrite($fp, 'echo $row[\'Value\'];'."\n");

Обратите внимание, как одинарные и двойные кавычкиРабота.\ n преобразуется в новую строку, но все, что находится в одинарных кавычках, рассматривается как строка и печатается как есть, кроме \ ', что должно вывести буквальную одинарную кавычку в выходном файле.помогает.

1 голос
/ 14 июня 2011

Есть еще пара ответов, которые работают, но я хочу уточнить:

Конструкция "echo" может принимать переменную или строку. Вы не можете отобразить строку на экране так же, как вы делаете переменную. Например: echo hello; не будет вести себя так, как вы думаете. Вы должны включить его в кавычки, такие как echo "hello";

Вы также можете использовать одинарные кавычки. Одиночные и двойные кавычки ведут себя по-разному. Например:

$foo = "bar";
echo $foo;
echo "$foo";
echo '$foo';

Первый будет отображать "bar", второй также будет отображать "bar", потому что PHP ищет переменные в строках двойных кавычек. Третий будет отображать '$ foo', потому что PHP не пытается выполнить подстановку переменных в одной строке в кавычках. Так что вы можете сделать (как сказал @ mark-b):

echo "\$row['Value']";

или

echo '$row[\'Value\']';

Теперь этот синтаксис $row->value, который вы видели, является нотацией объекта. Предполагается, что $row является объектом, а не массивом. Объекты - это совершенно другая игра в мяч.

...