Одинарная кавычка и двойная проблема

#php #xml

#php #xml

Вопрос:

В файле PHP я присваиваю XML-файл входной переменной

Пример:

 $xmlfile = '<?xml version="1.0" encoding="UTF-8"?>
<creators>
    <creator>
        <creatorName>Ganesh</creatorName>
    </creator>
</creators> 
<identifier identifierType="id">Dynamic input($input)</identifier>'; 
  

В части динамического ввода я хочу объявить переменную типа $input, которая будет основана на предыдущем значении.

Как я могу объявить переменную ($input) в «(одинарные кавычки), потому что объявление нарушает структуру.

Ответ №1:

Вы можете объединить его в:

 $xmlfile = '<?xml version="1.0" encoding="UTF-8"?>
<creators>
    <creator>
        <creatorName>Toru, Nozawa</creatorName>
    </creator>
</creators> 
<identifier identifierType="id">Dynamic input(' . $input. ')</identifier>'; 
  

Справедливое предупреждение, XML не может содержать все значения, поэтому вам может потребоваться экранировать данные в зависимости от того, откуда они берутся — например, вам могут не понадобиться угловые скобки, и вам, безусловно, нужно очистить все управляющие символы.

Ответ №2:

Вы должны использовать double quotes или выбрать строку HEREDOC.

 $xmlfile = "<?xml version="1.0" encoding="UTF-8"?>
<creators>
    <creator>
        <creatorName>Toru, Nozawa</creatorName>
    </creator>
</creators> 
<identifier identifierType="id">Dynamic input($input)</identifier>";  
  

Строка HEREDOC : ( <<<ABC является идентификатором открытия, а идентификатор закрытия должен начинаться с первого столбца строки — ABC .

 $xmlfile = <<<ABC
<?xml version="1.0" encoding="UTF-8"?>
<creators>
    <creator>
        <creatorName>Toru, Nozawa</creatorName>
    </creator>
</creators> 
<identifier identifierType="id">Dynamic input($input)</identifier>
ABC;
  

Ответ №3:

Попробуйте:

 $xmlfile = '<?xml version="1.0" encoding="UTF-8"?>
<creators>
    <creator>
        <creatorName>Toru, Nozawa</creatorName>
    </creator>
</creators> 
<identifier identifierType="id">Dynamic input('.$input.')</identifier>'; 
  

Ответ №4:

Я предпочитаю использовать объединение вместо включения переменных в двойные кавычки или HEREDOC (но HEREDOC идет следующим в моем списке предпочтений, если текст достаточно длинный) по трем причинам:
1) нет необходимости экранировать все двойные кавычки (конечно, не применимо к HEREDOC); 2) интерпретатору PHP не нужноразбирайте длинный текст снова и снова в каждом запросе, чтобы найти любую переменную внутри и заменить ее на ее значение.
3) меньше шансов сделать опечатку в имени переменной.