包含@的请求不起作用

我为正在使用的数据库设置了快速搜索功能。基本上,您搜索一个电子邮件地址,然后您将根据该电子邮件获得匹配。

目前,它可以正常工作,例如,我可以编写anna并获得诸如的点击[email protected]如果我要搜索,它也可以工作thedomain.com

但是第二次我写“ anna @”,我得到“没有成功”。不好意思,当我在搜索字段中输入@时,我只是没有获得任何点击。

该脚本基于附加了index.html一些内容jssearch.php脚本以及该脚本。

以下是的代码index.html


<!DOCTYPE HTML>
<html>
<head>
    <!-- Meta -->
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Live search</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <!-- Load CSS -->
    <link href="style/style.css" rel="stylesheet" type="text/css" />

    <!-- Load Fonts -->
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:regular,bold" type="text/css" />
    <!-- Load jQuery library -->
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <!-- Load custom js -->
    <script type="text/javascript" src="scripts/custom.js"></script>
</head>
<body>
    <div id="main">
        <!-- Title -->
        <div class="icon"></div>
        <h1 class="title">Search</h1>
        <h5 class="title">Find relevant data</h5>

        <!-- Input -->
        <input type="text" id="search" value="E-Mailaddress" onfocus="this.value = ''; return true" onblur="this.value = 'E-Mailaddress'; return true" autocomplete="off">

        <!-- Shows The result -->
        <h4 id="results-text">Showing results for: <b id="search-string">Array</b>    </h4>
            <ul id="results"></ul>


        </div>

    </body>
    </html>

search.php脚本:


<?php
/************************************************
    The Search PHP File
************************************************/


/************************************************
    MySQL Connect
************************************************/
// Credentials
$dbhost = "localhost";
$dbname = "dbname";
$dbuser = "dbuser";
$dbpass = "dbpassword";

//  Connection
global $tutorial_db;

$tutorial_db = new mysqli();
$tutorial_db->connect($dbhost, $dbuser, $dbpass, $dbname);


//  Check Connection
if ($tutorial_db->connect_errno) {
    printf("Connect failed: %s\n", $tutorial_db->connect_error);
    exit();
}

/************************************************
    Search Functionality
************************************************/

// Define Output HTML Formating
$html = '';
$html .= '<li class="result">';
$html .= '<a target="_blank" href="urlString">';
$html .= '<h3>nameString</h3>';
$html .= '<h4>functionString</h4>';
$html .= '</a>';
$html .= '</li>';

// Get Search
$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
$search_string = $tutorial_db->real_escape_string($search_string);

// Check Length More Than One Character
if (strlen($search_string) >= 1 && $search_string !== ' ') {
    // Build Query
    $query = "SELECT * FROM table_name WHERE Emailaddress LIKE '%".$search_string."%'";

    // Do Search
    $result = $tutorial_db->query($query);
    while($results = $result->fetch_array()) {
        $result_array[] = $results;
    }

    // Check If We Have Results
    if (isset($result_array)) {
        foreach ($result_array as $result) {

            // Just a normal output
            $output = "<li>$result[Dataentry] / <a href='showmore.php?ticketid=$result[ticketref]'>Go to ticket</a> / <strong>$result[Emailaddress]</strong></li>";

            // Output
            echo $output;
        }
    }
    else{

        // Format No Results Output
        $output = str_replace('urlString', 'javascript:void(0);', $html);
        $output = str_replace('nameString', '<b>Ingen resultater...</b>', $output);
        $output = str_replace('functionString', 'Sorry :(', $output);

        // Output
        echo($output);
    }
}


/*
// Build Function List (Insert All Functions Into DB - From PHP)

// Compile Functions Array
$functions = get_defined_functions();
$functions = $functions['internal'];

// Loop, Format and Insert
foreach ($functions as $function) {
    $function_name = str_replace("_", " ", $function);
    $function_name = ucwords($function_name);

    $query = '';
    $query = 'INSERT INTO search SET id = "", function = "'.$function.'", name = "'.$function_name.'"';

    $tutorial_db->query($query);
}
*/
?>

包含的custom.js文件:

/* JS File */

// Start Ready
$(document).ready(function() {  

    // Icon Click Focus
    $('div.icon').click(function(){
        $('input#search').focus();
    });

    // Live Search
    // On Search Submit and Get Results
    function search() {
        var query_value = $('input#search').val();
        $('b#search-string').html(query_value);
        if(query_value !== ''){
            $.ajax({
                type: "POST",
                url: "search.php",
                data: { query: query_value },
                cache: false,
                success: function(html){
                    $("ul#results").html(html);
                }
            });
        }return false;    
    }

    $("input#search").live("keyup", function(e) {
        // Set Timeout
        clearTimeout($.data(this, 'timer'));

        // Set Search String
        var search_string = $(this).val();

        // Do Search
        if (search_string == '') {
            $("ul#results").fadeOut();
            $('h4#results-text').fadeOut();
        }else{
            $("ul#results").fadeIn();
            $('h4#results-text').fadeIn();
            $(this).data('timer', setTimeout(search, 100));
        };
    });

});

index.htmlsearch.phpcustom.js都编码了utf-8,我的数据库是utf8_general_ci

谁能看到为什么这行不通?我是JavaScript的新手,并且感觉到中存在问题JS

康弗里克

这行(如DCoder评论中提到的

$search_string = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);

替换所有字符除A-Za-z0-9通过一个空的空间。

@符号添加到排除的字符中:

$search_string = preg_replace("/[^A-Za-z0-9@]/", " ", $_POST['query']);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章