Использование переменных PHP внутри HTML-тегов?

Я новичок в php, но я застрял в этой проблеме... Скажите, что я жду, чтобы поместить ссылку на другой сайт с заданным параметром, как мне это сделать?

Это то, что у меня есть сейчас:

<html>
<body>
<?php
  $param = "test";

  echo "<a href="#" onclick="location.href='http://www.whatever.com/$param'; return false;">Click Here</a>;
?>

</body>
</html>

Ответ 1

Ну, для начала вы можете не злоупотреблять эхом, потому что (как и проблема в вашем случае) вы можете очень легко ошибаться в кавычках.

Это устранит вашу проблему:

echo "<a href=\"http://www.whatever.com/$param\">Click Here</a>";

но вы действительно должны это сделать

<?php
  $param = "test";
?>
<a href="http://www.whatever.com/<?php echo $param; ?>">Click Here</a>

Ответ 2

Вы можете сделать это несколькими способами, в зависимости от типа используемых вами кавычек:

  • echo "<a href='http://www.whatever.com/$param'>Click here</a>";
  • echo "<a href='http://www.whatever.com/{$param}'>Click here</a>";
  • echo '<a href="http://www.whatever.com/' . $param . '">Click here</a>';
  • echo "<a href=\"http://www.whatever.com/$param\">Click here</a>";

Двойные кавычки допускают переменные в середине строки, где, поскольку одинарные кавычки являются строковыми литералами и, как таковые, интерпретируют все как строку символов - не более того - даже не \n будет расширяться до значения новый символ линии, он будет просто символами \ и n в последовательности.

Вам нужно быть осторожным в отношении использования вами любого типа цитирования, которое вы решите. Вы не можете использовать двойные кавычки внутри строки с двойными кавычками (как в вашем примере), так как вы рано закончите строку, а это не то, что вы хотите. Однако вы можете избежать внутренних двойных кавычек, добавив обратную косую черту.

В отдельном примечании вам может потребоваться осторожность при атаках XSS при печати небезопасных переменных (заполненных пользователем) в браузере.

Ответ 3

Там есть способ короткого типа, который я использовал недавно. Возможно, это нужно настроить, но он должен работать в большинстве основных PHP-установок. Если вы сохраняете ссылку в переменной PHP, вы можете сделать это следующим образом, основанным на OP:

<html>
  <body>
    <?php
      $link = "http://www.google.com";
    ?>
    <a href="<?= $link ?>">Click here to go to Google.</a>
  </body>
</html>

Это будет оценивать переменную как строку, по существу сокращенную для echo $link;

Ответ 4

Я рекомендую использовать короткий "вместо". Если вы это сделаете, вам больше не придется избегать двойной кавычки (\ ").

В этом случае вы напишете

echo '<a href="http://www.whatever.com/'. $param .'">Click Here</a>';

Но посмотрите на ответ nicolaas "что вам действительно нужно", чтобы узнать, как создавать более чистый код.

Ответ 5

Вы можете вставить переменную в строку с двойными кавычками, такую ​​как мой первый пример, или вы можете использовать конкатенацию (период), как в моем втором примере:

echo "<a href=\"http://www.whatever.com/$param\">Click Here</a>";

echo '<a href="http://www.whatever.com/' . $param . '">Click Here</a>';

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

Ответ 6

HI Jasper,

вы можете сделать это:

<?
sprintf("<a href=\"http://www.whatever.com/%s\">Click Here</a>", $param);
?>