PHP: Как назначить большую строку с одинарными и двойными кавычками - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно назначить большие строки в массиве. Эти строки содержат одинарные и двойные кавычки, а также обратную косую черту, с которой нельзя сначала экранировать .

Мой код выглядит следующим образом:

$myArray = [
    'x' => 'this_is_my_string',
];

Теперь вместо 'this_is_my_string' у меня есть большие строки как:

\relative c' {
    \key ees \major
    bes'2 \mf c   bes4. (as8) g4 (as) \breathe
    \bar "|."

Как написать свой код для прямого назначения больших строк, подобных этой?

Я пробовал с HEREDO C и NOWDO C и addlashes / addcslashed , но для них требуется экранирование хотя бы одного из ´ или ".

Кстати: большие строки: Lilypond фрагменты

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Просто используйте nowdo c.

Nowdo c определяется аналогично heredo c, но внутри nowdo c анализ не выполняется. Конструкция идеальна для встраивания PHP кода или других больших блоков текста без необходимости экранирования.

<?php

$myArray = [
    'x' => <<<'STR'
      \relative c' {
    \key ees \major
    bes'2 \mf c   bes4. (as8) g4 (as) \breathe
    \bar "|."
STR
];

echo $myArray['x'];
0 голосов
/ 16 марта 2020

Вы ищете Выходная буферизация .

<?php

ob_start();

?>\relative c' {
    \key ees \major
    bes'2 \mf c   bes4. (as8) g4 (as) \breathe
    \bar "|."<?php

$myArray = [
    'x' => ob_get_clean()
];

?>

ob_start() инициализирует выходную буферизацию, перенаправляя STDOUT в буфер. ob_end_clean() завершит буферизацию вывода и вернет буфер до этой точки для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...