<?php 
error_reporting(0);
session_start();
include("conn/conn.php");
$couName=$_POST[couName];
$tech_id=$_POST[tech_id];
$teacherName=$_POST[techName];
$couNum=$_POST[couNum];
$intro=$_POST[intro];
$demand=$_POST[demand];
$sql=mysql_query("insert into thesis_topic(couName,tech_id,teacherName,couNum,intro,demand) values('$couName','$tech_id','$teacherName','$couNum','$intro','$demand')");//echo "insert into thesis_topic(couName,tech_id,teacherName,couNum,intro,demand) values('$couName','$tech_id','$teacherName','$couNum','$intro','$demand')";
//if($sql){
echo "<script language='javascript'>alert('题目上传成功!');history.back();</script>"; // }?>
以上代码还不完美,就是我这里需要将couName(题目)这个字段和数据库进行比较 ,如果有超过5个连续汉字相同,则上传失败。新小白只会增删改查,求大神指导下。这个将题目分成五个汉字的字符串以后使用like函数怎么整啊???

解决方案 »

  1.   

    这个在数据库里很难完成假定输入串为:将题目分成五个汉字的字符串
    那么连续五个字可以是:
    将题目分成,五个汉字的,字符串
    将,题目分成五,个汉字的字,符串
    将题,目分成五个,汉字的字符,串
    将题目,分成五个汉,字的字符串
    将题目分,成五个汉字,的字符串就是在 php 中拆分,也不是简单的事情如果没有连续 5 个字的限制,php 中可以$a = '将题目分成五个汉字的字符串';
    $b = '将题目分五个汉字字符串';
    echo similar_text($a, $b, $r), ' 相似度 ', $r;
    22 相似度 91.666666666667在数据库中也还是做不到的
      

  2.   


    //先转换编码
    $encode = mb_detect_encoding($title, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); 
    $title = mb_convert_encoding($title, 'UTF-8', $encode);
    $encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); 
    $str = mb_convert_encoding($str, 'UTF-8', $encode);$num = 5; //对比字数
    $l = mb_strlen($str, 'utf-8'); //字符串长度
    $result = false;
    foreach($i = 0; $i < $l - $num + 1;$i++) {
      $title_tmp = mb_substr($str, $i, $num, 'utf-8'); //截取一段标题
      $re = mb_strpos($str, $title_tmp);
      if($re) $result = true;
    }记得加载mb_string模块
      

  3.   

    第八行应该是$title
      

  4.   

    第八行应该是$title
    晕了 还有第11行
      

  5.   

    在数据库中多次循环比对,对数据库压力较大,但可以一试
    <?php
    $str = "中国人是什么人呢";
    $flag = 5;
    $len = mb_strlen($str);// 循环获取5个一组的字符串
    for($i=0;$i<$len-$flag+1; $i++){
        $check_str = mb_substr($str, $i, $flag);
        echo $check_str.'<br>';    // 比对数据库记录
        $sqlstr = "select * from thesis_topic where couName like '%".$check_str."%'";
        $query = mysql_query($sqlstr);
        if(mysql_num_rows($query)>0){
            echo '已存在';
            break;
        }
    }// 不存在,继续执行插入动作
    感觉应该使用php来比对。但需要把数据库中的文字先获取出来。如果记录多还是比较麻烦的。