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

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

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

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

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

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

 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> 

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

  • 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 при печати небезопасных переменных (заполненных пользователем) в браузере.

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

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

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

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

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

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

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

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

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

HI Jasper,

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

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

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