0

我在 php 脚本中使用 mysqli 查询从 mysql 数据库表中提取数据并将其显示在网站上。

一些数据包括链接,但它们以特定格式格式化。链接格式为#Link Name#http://www.link.com

所以首先#设置名称,第二个#设置超链接。

我需要我的 php 脚本来解析它并在网站上显示为正常的超链接。

这是php脚本:

<?php
include('mysql_connection.php');

$c = mysqlConnect();

$locale = $_GET['locale'];
$last_news_id = $_GET['news_id'];

sendQuery ("set character_set_results='utf8'"); 
sendQuery ("set collation_connection='utf8_general_ci'"); 

if (strcmp($locale,"en") != 0)
    $locale = "en";

$result = sendQuery("SELECT * FROM news WHERE id > ".$last_news_id." and locale = '" . $locale . "' ORDER BY id DESC LIMIT 10");

echo '<table width=\"100%\">';
while($row = mysqli_fetch_array($result, MYSQL_NUM))
{
    echo '<tr><td width=\"100%\"><b>Date: </b>'.$row[2].'</td></tr>';
    echo '<tr><td width=\"100%\">'.nl2br($row[3]).'</td></tr>';
    echo '<tr><td width=\"100%\"><hr style="height: 2px; border: none; background: #515151;"></td></tr>';
}
echo '</table>';

mysqliClose($c);
?>

编辑:我添加了这一行,它有助于解决一个问题:

echo '<tr><td width=\"100%\">'.preg_replace('/#([^#]*)#.*/', '<a href="$2" target="_blank">$1</a>', $row[3]).'</td></tr>';

它仍然打开现有页面而不是超链接。我猜 $2 应该是超链接,第二个 # 之后的值。但是,我不完全确定如何将其编码到 php.ini 中。

4

2 回答 2

2

我假设 $row[3] 是数据包括链接,通过使用正则表达式,

preg_replace('/#([^#]*)#(.*)/', '<a href="$2">$1</a>', $row[3]);
于 2012-12-24T13:07:43.723 回答
0

正则表达式会更好 - 但你可以这样做:

假设您的链接是“ $row[3]”,并且它只包含一种格式为“#Link Name#http://www.link.com”的信息,除此之外,正则表达式就是要走的路。

$temp_data = explode("#",$row[3]);
$linkname = $temp_data[1];
$url = $temp_data[2];

echo "<a href='".$url."'>".$linkname."</a>";
于 2012-12-24T13:12:41.643 回答