在一个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,然后逐一与本文章内容匹配,如果匹配,则生成链接.
匹配的时候是不是要用到正则表达式,对于正则表达式有点陌生,望高手指点一二,回些方法,正则表达式的一些字符串等都行.
当然最好是贴些大致代码啦, 让我拨云见日月 !!!!在线等,十分感谢!!加感激!!!加由衷感谢或者有其他方法的,也十分欢迎哈.
 

解决方案 »

  1.   

    获取文章的title处理后将其放入数组中.
    $array = array(
       '/(title1)/',
       '/(title2)/',
       '/(title3)/',
     );
    preg_repalce($array, '<a href="xxxx">\\1</a>');
      

  2.   

    一般这种东西都是按照预设的词汇来替换连接,要其他文章标题连接的话还是手动设置比较实际。
    这种事情最好读出数据之后替换的事情交给javascript干,不然数据多起来你数据库干起这个就不用干别的了。
      

  3.   

    实在不会可以查看一些编辑器,其实很简单,主要是就是利用preg_replace进行正则替换,
    preg_repalce($array, ' <a href="xxxx">\\1 </a>');
    \\1表示前面正则表达式中,匹配的内容.你可以查看ubb的源码,呵呵,哪里有N多.
      

  4.   

    <?php
    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没定义。
    还望各位指点下,正则的运用
      

  5.   

    哈哈,这个应该用STR_REPLACE吧,而不是PREG_REPLACE
      

  6.   

    preg_repalce => preg_replacepreg_replace用它,是因为可以用正则匹配.$array[$i]=$row[0]; 这个数组要做处理的,比如说有正则的特殊符号要要转义,要在前后加上/.
      

  7.   

    还是应该使用正则,正则最早是unix系统最基本最经典的应用,要学好php的字符串处理,就一定要学好正则,所以楼主还是从根上补吧。
      

  8.   

    用preg_replace不假,但是有几个问题,大家共同学习
    <?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”
      

  9.   

    经过几次的调试,出来了.真是谢谢各位热心,尤其是掌柜,哈哈
      至于12说的情况,我没有出现哦,替换出来的都是正确的.可能你哪里有纰漏了吧
      
    等下我结帖哈,不过我还有个问题,进一步深入,我想当鼠标放在链接上会出来一个小窗口,显示其内容,这个是不是要用到CSS.
     我会另开贴求问,也欢迎回复,我是个初学者,很多问题,哈哈
      

  10.   

    STR_REPLACE也可以用数组做参数的,他这个其它很简单的东西,全部取出来,标题一数组,链接一个组,直接str_replace 就OK,比正则要快得多,