我正在使用 PHP 通过对数据库表进行 preg_match_all 搜索来生成对文本的引用列表。这是PHP代码:
$query = "SELECT primary_tag,display_short_title,content FROM topics;";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$num_results = mysql_num_rows($result);
for ($i = 0; $i < $num_results; $i++) {
$row = mysql_fetch_array($result);
if (preg_match_all("/(\<i\>U\<\/i\>|U) [0-9]{1,2}\.[0-9]{1,7}/", $row["content"], $matches)) {
foreach ($matches[0] as $match) {
$match = ltrim(strip_tags($match), "U ");
echo '<p class="textmark_result">' . $match;
echo ' <a href="../Essays/topic.php?shorttitle=' . $row["primary_tag"] . '">' . $row["display_short_title"] . '</a>';
echo "</p>\n";
}
}
}
结果(查看源代码)如下所示:
<p class="textmark_result">15.1737 <a href="../Essays/topic.php?shorttitle=medicine">Medicine</a></p>
<p class="textmark_result">5.678 <a href="../Essays/topic.php?shorttitle=science">Science</a></p>
<p class="textmark_result">14.665 <a href="../Essays/topic.php?shorttitle=science">Science</a></p>
在生成的网页中,我想按中间的小数(代码中的 $match)对结果进行排序,这样(在本例中)首先出现 5.678,然后是 14.665,然后是 15.1737。有没有办法做到这一点?
谢谢!