Я довольно новичок в 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