0

phpスクリプトでmysqliクエリを使用して、mysqlデータベーステーブルからデータをプルし、Webサイトに表示しています。

一部のデータにはリンクが含まれていますが、それらは特定の形式でフォーマットされています。リンクは次のようにフォーマットされます#Link Name#http://www.link.com

したがって、最初#に名前を設定し、2番目#にハイパーリンクを設定します。

これを解析してWebサイトに通常のハイパーリンクとして表示するには、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はハイパーリンク、つまり2番目の#の後に続く値である必要があると思います。ただし、これをphpにコーディングする方法が完全にはわかりません。

4

2 に答える 2

2

$ row [3]は、正規表現を使用して、データにリンクが含まれていると仮定します。

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

正規表現の方が良いでしょう-しかし、あなたはこのようにそれを行うことができます:

リンクが' $row[3]'であり、その形式の情報が1ビットだけ含まれていると仮定すると'#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 に答える