Как отобразить гиперссылку в php - PullRequest
0 голосов
/ 01 апреля 2012

Я читаю электронные письма из базы данных. И я хочу повторить электронные письма как гиперссылки, но это не работает.

<?php
$un = $_POST['username'];
$pw = $_POST['password'];

// connect to the db
$user = 'proc';
$pswd = 'passwd';
$db = 'school';
$conn = mysql_connect('localhost', $user, $pswd);
mysql_select_db($db, $conn);

// run the query to search for the username and password the match
$query = "SELECT email AS text FROM contact";
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());

// this is where the actual verification happens
while ($row = mysql_fetch_assoc($result)) {
    echo ("\n".$row['text']);
    echo "<a href=.$row['text']>some text</a>";
}
?>

Есть идеи, что не так в моем коде?

Ответы [ 5 ]

6 голосов
/ 01 апреля 2012

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

echo "<a href={$row['text']}>some text</a>";

или

echo "<a href=".$row['text'].">some text</a>";

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

Помните, что в вашем текущем коде есть другие проблемы: неткавычки вокруг значений атрибутов HTML, и не экранирование должным образом значений, встроенных в HTML.Исправьте это также с помощью чего-то вроде

echo '<a href="'.htmlspecialchars($row['text']).'">some text</a>";

Точная правильная форма также зависит от кодировки ваших данных;подробности см. htmlspecialchars.

2 голосов
/ 01 апреля 2012

Используйте это в своем эхо-заявлении:

echo "<a href=\"mailto:$row[text]\" >some text</a>";
1 голос
/ 01 апреля 2012

В соответствии с фрагментом кода, я полагаю, что он неправильно работает в строке:

echo "<a href=.$row['text']>some text</a>";

Это должно быть:

echo "<a href=\"" . $row['text'] . "\">some text</a>";
0 голосов
/ 01 апреля 2012

Используйте этот скрипт:

$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1">\\1</a>', $row['text']);
echo $text;
0 голосов
/ 01 апреля 2012

Еще один способ

echo "<a href='$row[text]'>some text</a>";

Однако, мой любимый вариант - сначала получить данные

<?php
include 'my_super_db_access_abstraction_class.php';
$data['rows'] = db::getAll("SELECT email AS text FROM contact");
tpl('template.php',$data);
?>

, а затем включить шаблон с естественным видом HTML:

<ul?>
<?php foreach ($rows as $row): ?>
  <li><a href="<?=$row['text']?>">some text</a></li>
<?php endforeach ?>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...