Как включить переменную PHP в строку XML

0

Я пытаюсь включить переменную PHP внутри строки XML. Кажется, он не работает, может кто-то увидеть, что с ним не так.

// Construct contact data in XML format
$data = <<<STRING
<contact>
<Group_Tag name="Contact Information">
<field name="First Name">$firstname</field>
<field name="Last Name">$lastname</field>
<field name="Email">$email</field>
</Group_Tag>
</contact>
<Group_Tag name="Sequences and Tags">
<field name="Contact Tags">Test</field>
<field name="Sequences">*/*3*/*8*/*</field>
</Group_Tag>
</contact>
STRING;

$data = urlencode(urlencode($data));
  • 2
    не работает КАК ?
  • 0
    Кажется, работает просто отлично: codepad.org/e1fc29Yl . Может быть, предоставить более конкретный контекст, проверить значения $firstname , $lastname и т. Д.
Показать ещё 1 комментарий
Теги:
string

2 ответа

1

Это будет работать!

<contact>
 <Group_Tag name="Contact Information">
  <field name="First Name">'. $firstname.'</field>
  <field name="Last Name">'. $lastname.'</field>
  <field name="Email">'. $email.'</field>
 </Group_Tag>
</contact>

В некоторых случаях, когда ваша переменная содержит символы типа "&" и "<", добавляя теги CDATA до и после переменной, потому что они ломают XML. В вашем случае $ projectid, по-видимому, является id (int), но, возможно, вы захотите использовать в своем скрипте более переменную, содержащую эти символы, в таких случаях следует учитывать важность тегов CDATA. Пример:

<field name="First Name"><![CDATA['. $firstname.']]></field>
  • 0
    Есть ли способ вызвать функцию в строке? $response->getSomething($arguments)
  • 0
    Скобки работают для вызова функции внутри строки. {$response->getSomething($arguments)}
-2

Попробуй это:

$data = "
 <contact>
    <Group_Tag name=\"Contact Information\">
    <field name=\"First Name\">$firstname</field>
    <field name=\"Last Name\">$lastname</field>
    <field name=\"Email\">$email</field>
    </Group_Tag>
    </contact>
    <Group_Tag name=\"Sequences and Tags\">
    <field name=\"Contact Tags\">Test</field>
    <field name=\"Sequences\">*/*3*/*8*/*</field>
    </Group_Tag>
  </contact>
";

echo $data;
  • 1
    и это решение ... КАК? Если heredoc OP не работает, то переключение на многострочную строку тоже не поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню