Использование переменных PHP внутри тегов HTML? - PullRequest
14 голосов
/ 26 мая 2011

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

Вот что у меня сейчас:

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

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

</body>
</html>

Ответы [ 7 ]

23 голосов
/ 26 мая 2011

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

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

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>
12 голосов
/ 26 мая 2011

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

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

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

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

8 голосов
/ 20 ноября 2013

Есть способ, который я использовал в последнее время.Это, возможно, должно быть настроено, но это должно работать в большинстве основных установок 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.;

2 голосов
/ 26 мая 2011

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

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

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

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

1 голос
/ 26 мая 2011

Привет Джаспер,

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

<?
sprintf("<a href=\"http://www.whatever.com/%s\">Click Here</a>", $param);
?>
1 голос
/ 26 мая 2011

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

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

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

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

0 голосов
/ 26 мая 2011

Heredoc может быть вариантом, см. Пример 2 здесь: http://php.net/manual/en/language.types.string.php

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