Использование переменных 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);
?>
Ответ 7
Heredoc может быть вариантом, см. пример 2 здесь: http://php.net/manual/en/language.types.string.php