PHP эхо не дает правильный результат, перевод строки в нижний регистр - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь отобразить динамический тег, который вызывает функцию javascript, но параметры отображаются неверно.Они должны сохранять свою капитализацию и не добавлять пробелы.Почему он это делает?

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

Что мне нужно:

echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")"><img src="'.$info[1].'"/></a>'

Версия Pure String:

echo '<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")"><img src="/images/calc-eng-desktop.png"></a>'

Выходы:

<a href="/calc" onclick="redirTrackCalcBtn(" test_button_1",="" "="" calc")"="">
    <img src="/images/calc-eng-desktop.png">
</a>

Должен Вывод:

<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
    <img src="/images/calc-eng-desktop.png">
</a>

Я также пытался:

echo "<a href=\"".$info[0]."\" onClick=\"redirTrackCalcBtn(\"".$bname."\", \"".$info[0]."\")\"><img src=\"".$info[1]."\"/></a>";

Но это все еще выводит:

<a href="/calc" onclick="redirTrackCalcBtn(" test_banner_1",="" "="" calc")"=""><img src="/images/calc.png"></a>

согласно ответу Дхармана. Я также пытался:

echo '<a href="'.$info[0].'" 
    onClick=\"redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\"
    ><img src="'.$info[1].'"/></a>'

Это выводит:

<a href="/calc" onclick="\&quot;redirTrackCalcBtn(&quot;Test_Banner_1&quot;," "="" calc")\"="">
<img src="/images/preguntanos-h-es.png">
</a>

Редактировать для контекста:Это для динамического баннера в содержимом блога, работающего на WordPress.

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Вы можете упростить свои выражения, используя следующую технику ...

  1. HTML принимает одинарные или двойные кавычки для атрибутов.
  2. PHP может оценивать переменные внутри строк, разделенных двойными кавычками. Это может сделать ваши выражения намного проще для понимания.

Итак, исходя из этого, ответ будет:

<?php
echo "<a href='{$info[0]}' onClick='redirTrackCalcBtn(\"{$bname}\", \"{$info[0]}\")'><img src='{$info[1]}'/></a>";

Это даст следующий результат ...

<a href='/calc' onClick='redirTrackCalcBtn("test_button_1", "/calc")'><img src='/images/calc-eng-desktop.png'/></a>

В вашем вопросе вы показали Pure String Version и то, что вы считаете нормальным выходом. Оба эти вывода неверны. Вы не можете использовать что-то вроде onclick="redirTrackCalcBtn("Test_Button_1", "/calc")", потому что двойная кавычка сразу после открывающей скобки завершает атрибут onclick, который становится onclick="redirTrackCalcBtn(". После этого браузер постарается найти следующие атрибуты и их значения. Таким образом, пространства, которые вы видите, являются естественным пространством между атрибутами.

В заключение, нет ничего плохого в echo.

0 голосов
/ 12 июня 2019

Возможно, более простой способ преодолеть путаницу в кавычках - назначить строку другим способом.Вы можете удалить один слой цитаты, используя запись heredoc.

в качестве отступа, ваш "правильный" вывод неверен:
onclick = "redirTrackCalBtn(" Test_Button_1, "/calc") ">

<a href="/calc" onclick="redirTrackCalcBtn("Test_Button_1", "/calc")">
  <img src="/images/calc-eng-desktop.png">
</a>

Ваш HTML должен выглядеть следующим образом:

<a href="/calc" onclick="redirTrackCalcBtn('Test_Button_1', '/calc')">
  <img src="/images/calc-eng-desktop.png">
</a>

Используя Heredoc запись, вам не нужно объединять и экранировать, просто напишитеэто так, как HTML должен быть:

$link =<<<LINKINFORMATION
<a href="{$info[0]}" onclick="redirTrackCalcBtn('{$bname}', '{$info[0]}')">
  <img src="/images/calc-eng-desktop.png">
</a>
LINKINFORMATION;

echo $link;
0 голосов
/ 12 июня 2019

Вам нужно экранировать один набор двойных кавычек , иначе они смешиваются вместе.Поскольку вы использовали одинарные кавычки в PHP, вам нужно использовать двойные в HTML / JavaScript, а затем снова использовать одинарные кавычки, но на этот раз из PHP.

echo '<a href="'.$info[0].'" onClick="redirTrackCalcBtn(\''.$bname.'\', \''.$info[0].'\')" ><img src="'.$info[1].'"/></a>';

Переменные JavaScript заключены в \'

или

echo '<a href="'.$info[0].'" onClick=\'redirTrackCalcBtn("'.$bname.'", "'.$info[0].'")\' ><img src="'.$info[1].'"/></a>';

Теперь выделенная часть заключена в экранированные кавычки, все остальное осталось прежним.

У вас есть 3 языка, смешанных вместе, 3 слоя:

PHP will use '
-->HTML will use "
---->JavaScript will use \'

Каждый использует двойные или одинарные кавычки, и у вас есть только два на выбор.Поэтому вам нужно сбежать от одного из них.

Более простой пример:

echo '<a onclick="alert(\'hi\')">Hello</a>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...