PHP: попытка поместить HTML-атрибут href в `echo`

#php #echo #href

#php #echo #href

Вопрос:

Кажется, я не могу получить URL echo -адрес. Я хочу создать ссылку для открытия Карт Google:

введите описание изображения здесь

Я не могу понять, что не так с моим кодом:

 $query = mysql_query("SELECT * FROM cev")or die(mysql_error());
while($row = mysql_fetch_array($query))
{
  $name = $row['sitecode'];
  $lat = $row['latitude'];
  $lon = $row['longitude'];
  $type = $row['sitetype']; 
  $city = $row['city']; 
  $id = $row['id'];

  echo("addMarker($lat, $lon,'<b>$name</b><a href="editcev.php?id=' . $row['id'] . '">View</a><br><br/>$type<br/>$city');n");
  

Ответ №1:

Вы должны исправить кавычки:

  echo "addMarker($lat, $lon,'<b>$name</b><a href="editcev.php?id={$row['id']}">View</a><br><br/>$type<br/>$city');n";
  

Альтернативные способы

Здесь документ

 echo <<<EOS
addMarker($lat, $lon, '<b>$name</b><a href="editcev.php?id={$row['id']}">View</a><br><br/>$type<br/>$city');

EOS;
  

Конкатенация

 echo "addMarker($lat, $lon, '<b>$name</b>" .
  "<a href="editcev.php?id={$row['id']}">View</a>" .
  "<br><br/>$type<br/>$city)";
  

Используя addshashes

addMarker Выглядит как функция JavaScript. Вы можете предварительно обработать строку HTML с помощью addslashes :

 $html = <<<EOS
<b>$name</b><a href="editcev.php?id={$row['id']}">View</a><br><br/>$type<br/>$city
EOS;
$html = addslashes($html);

echo "addMarker($lat, $lon, '$html');n";
  

Рекомендации

Я рекомендую использовать редактор с поддержкой подсветки синтаксиса.

Прочитайте о строках PHP. Особенно вопрос экранирования.

Наконец, я бы не рекомендовал писать какой-либо HTML / JavaScript в коде PHP. Вместо этого используйте шаблонизаторы, такие как Smarty или Twig.

Комментарии:

1. для 2 ответов вы могли бы использовать heredocs / newdocs для этого. php.net/manual/en/language.types.string.php

Ответ №2:

Похоже, вы пытаетесь использовать метод внутри оператора echo. Если вы хотите использовать методы, переменные или некоторые материалы php, вы не должны использовать кавычки в большинстве случаев, если это не объект или метод, описанный eval.

Попробуйте так

 echo addmarker($lat, $lon, 
               '<b>'.$name.'</b> <a href="'.editcev.php?id=.' '.$row['id'].
               ".'>View</a><br><br/>'
               .$type.
               '<br/>'
               .$city.');'."n");
  

Я не знаю вашей точной ситуации, но я думаю, что это работает

Ответ №3:

   echo("addMarker(".$lat.",".$lon.",<b>".$name."</b><a href=ditcev.php?id=" . $row['id'] . ">View</a><br><br/>".$type."<br/>".$city.");n");