1

私はjqueryプラグインDatablesを使用しており、フィルタリングを行うためにphp処理ファイルを使用しています。複数のキーワードを許可するようにコードを既に変更しましたが、開始文字としてスペースを入力すると、JSONエラーが発生します。[OK]をクリックしなくてもこのエラーを無視できますか?または、スペースを開始できるようにphpを変更する方法はありますか。

ありがとう

ここにいくつかのコードがあります:

 $sWhere = "";
    if ( $_GET['sSearch'] != "")
    {
            $aWords = preg_split('/\s+/', $_GET['sSearch']);
            $sWhere = "WHERE (";

            for ( $j=0 ; $j<count($aWords) ; $j++ )
            {
                    if ( $aWords[$j] != "" )
                    {
                            if(substr($aWords[$j], 0, 1) == "!"){
                                    $notString = substr($aWords[$j], 1);
                                    $sWhere .= "(";
                                    for ( $i=0 ; $i<count($aColumns) ; $i++ ) {
                                            $sWhere .= $aColumns[$i]." NOT LIKE '%".mysql_real_escape_string( $notString )."%' AND ";
                                    }
                                    $sWhere = substr_replace( $sWhere, "", -4 );
                            }
                            else{
                                    $sWhere .= "(";
                                    for ( $i=0 ; $i<count($aColumns) ; $i++ ) {
                                            $sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $aWords[$j] )."%' OR ";
                                    }
                                    $sWhere = substr_replace( $sWhere, "", -3 );
                            }
                            $sWhere .= ") AND ";
                    }
            }
4

2 に答える 2

1

PHPのみを表示しているため、jsonエラーが発生する場所はわかりませんが、phpとjQueryの両方が、文字列の最初と最後から空白を削除する機能を提供します。

JavaScript では、残りの処理の前に、次のことができます。

my_string = $.trim(original_string);

そしてphpでは次のことができます:

$aWords = preg_split('/\s+/', trim($_GET['sSearch']));
// or use trim on the individual words of the result...
于 2012-04-24T19:42:34.220 に答える
1

あなたの問題はpreg_split()、単一スペースの文字列を操作することです:

$e = preg_split('/\s+/', " ");
print_r($e);

1 つのスペースを分割すると、2 つの空白文字列の配列が返されます。最初の行を次のように変更します。

$term = trim($_GET['sSearch']);
if ( $term != "")
{
        $aWords = preg_split('/\s+/', $term);

この方法では、基本的に空白の文字列でコードを実行しようとしません。

于 2012-04-24T19:38:02.860 に答える