在一个article表(字段有id,title,content),放了一些文章.然后在显示一篇文章的时候,如果文章的内容里有其他文章的题目.
匹配的字段就自动生成一个链接.并且鼠标移到起位置,会弹出其内容的小窗口.
比如说 id title content
1 animal animal don't like to eat fruit
2 fruit fruti contains a large percentage of water
3 water people can't live without water
4 people people like to eat meat of animal我的思路如下,打开文章的时候,便历article表里的title,这里有4个title,然后逐一与本文章内容匹配,如果匹配,则生成链接.
匹配的时候是不是要用到正则表达式,对于正则表达式有点陌生,望高手指点一二,回些方法,正则表达式的一些字符串等都行.
当然最好是贴些大致代码啦, 让我拨云见日月 !!!!在线等,十分感谢!!加感激!!!加由衷感谢或者有其他方法的,也十分欢迎哈.
匹配的字段就自动生成一个链接.并且鼠标移到起位置,会弹出其内容的小窗口.
比如说 id title content
1 animal animal don't like to eat fruit
2 fruit fruti contains a large percentage of water
3 water people can't live without water
4 people people like to eat meat of animal我的思路如下,打开文章的时候,便历article表里的title,这里有4个title,然后逐一与本文章内容匹配,如果匹配,则生成链接.
匹配的时候是不是要用到正则表达式,对于正则表达式有点陌生,望高手指点一二,回些方法,正则表达式的一些字符串等都行.
当然最好是贴些大致代码啦, 让我拨云见日月 !!!!在线等,十分感谢!!加感激!!!加由衷感谢或者有其他方法的,也十分欢迎哈.
$array = array(
'/(title1)/',
'/(title2)/',
'/(title3)/',
);
preg_repalce($array, '<a href="xxxx">\\1</a>');
这种事情最好读出数据之后替换的事情交给javascript干,不然数据多起来你数据库干起这个就不用干别的了。
preg_repalce($array, ' <a href="xxxx">\\1 </a>');
\\1表示前面正则表达式中,匹配的内容.你可以查看ubb的源码,呵呵,哪里有N多.
include("config.php");
$id=$_GET['id'];
$i=0;
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password);
mysql_select_db($mysql_database,$conn);
$sql="select * from article on title";
$result=mysql_query($sql);
while($row=mysql_fetch_row($result))
{
$array[$i]=$row[0];
$i++;
} 这段为把文章里的标题都获取处理,并放到数组$array里
$sql="select * from article where id=$id";
$result=mysql_query($sql);
$row=mysql_fetch_row($result); 把相应文章的标题和内容获取出来$row[0]$row[1]$row[2]分别为id,title,content的内容
//preg_repalce($array, ' <a href="/article.php?title=$row[1]">\\$row[1] </a>');
?>
<table width="100%" border="1">
<tr>
<td width="20%" height="50" bgcolor="#CCCCFF"><?=$row[0]?></td>
<td width="80%" height="50" bgcolor="#CCCCFF"><?=preg_repalce($array, ' <a href="/article.php?title=$row[0]">\\$row[1] </a>')?></td>
</tr>
</table> 在一个表格里,把它显示出来根据提示以上是我对此写的,但结果出来致命错误说preg_repalce没定义。
还望各位指点下,正则的运用
<?php
$link = mysql_connect("localhost","xxx","xxx") or die();
mysql_select_db("test");
$result = mysql_query("SELECT id,name FROM a");
$i=0;
while($row = mysql_fetch_array($result)){
$arr1[$i]='/'.$row[0].'/';
$arr2[$i]="<a href=article.php?title=$row[0]>$row[0]</a>";
$i++;
} $result = mysql_query("SELECT id,name FROM a where id='c'");
$row = mysql_fetch_array($result);?>
<html>
<body>
<table width="100%" border="1">
<tr>
<td width="20%" height="50" bgcolor="#CCCCFF"> <?php echo $row[0]; ?> </td>
<td width="80%" height="50" bgcolor="#CCCCFF"> <?php echo preg_replace($arr1, $arr2,$row[1]); ?> </td>
</tr>
</table>
</body>
</html>
1.上面的例子中preg_replace替换有问题,结果应该是显示不动只是给匹配的字段加链接,
所以直接在循环里面建立两个数组,对应的分别是要替换的字段和替换后结果的字段
2.替换的时候要注意数据的严谨,因为是循环处理,第一个字符串替换完成很可能替换后的结
果中含有下一个要替换的字符串,这样肯定达不到想要的结果,举个例子:
$str = 'replace aa'; $arr1[0]="/aa/";
$arr1[1]="/bb/";
$arr1[2]="/cc/"; $arr2[0]="there is bb";
$arr2[1]="there is cc";
$arr2[2]="cc"; preg_replace($arr1, $arr2,$row[1]);
本来我们要得到 “replace there is bb” 但是世界上我们得到 “replace there is there is cc”
至于12说的情况,我没有出现哦,替换出来的都是正确的.可能你哪里有纰漏了吧
等下我结帖哈,不过我还有个问题,进一步深入,我想当鼠标放在链接上会出来一个小窗口,显示其内容,这个是不是要用到CSS.
我会另开贴求问,也欢迎回复,我是个初学者,很多问题,哈哈