-3

この正規表現が失敗する理由を誰かが説明できますか?オンラインの正規表現テスターで動作します

http://www.spaweditor.com/scripts/regex/index.phppreg_matchこれは私と同じようにPHPを使用します。

これがほとんどすべての関連するコードです。

はい、正規表現は正常に機能しますが、phpコードは機能しません。いつ機能するかを覚えておく必要がありますが、通常はタイプミスではありません。この場合、 aでは.なくaを入力してパターンを文字列に連結しましたが,、これは非常にわかりにくいタイプミスです。私が構文エラーで行うそのような1つのトリックとして、私が見つけられないように思われるのは、問題のコードを再入力することです。もちろん、この場合、私のタイプミスは無効な構文にはなりませんでした。

preg_matchが誤った数のパラメーターを受け取っていたという事実がエラーを引き起こしたはずなので、おそらく私がすべきだったもう1つのことはApacheエラーログをチェックすることです。

私はjsonを返すphpスクリプトへのajax呼び出しを使用するのは初めてで、生成されるphpエラーが表示されないことに慣れていません。これまで、Javaクライアントを使用するときは、Webサービスの応答をテストするために常にphpcurlクライアントを使用していました。私は急いで、このプロジェクトのそのステップをスキップしました。

PHPを適切にデバッグするためにどのような方法を使用していますか?

//$colors  = mysql_real_escape_string($_POST['color']);
$colors='333333,cbafff';

 function addcolor($colors,$cart_id, $dbh) {
    //insert color or scheme into cart
    //If succeeds return success, if fail return failure
    $stmt2=$dbh->prepare("INSERT IGNORE INTO cart (cart_id,item_id) values (:cart_id,:item_id)");
    $stmt2->bindValue(':cart_id',$cart_id,PDO::PARAM_INT);
    $color_array=split(",",$colors);
    foreach ($color_array as $color) {
        $color=trim($color);

        if (!preg_match("/^[A-Fa-f0-9]{6}$/".$color)) {
            return array("result"=>"error: Invalid Color $color");
            break;
        }
        $stmt2->bindValue(':item_id',$color,PDO::PARAM_STR);
        if (!($stmt2->execute())) {
            return array("result"=>"failure ". $stmt2->getCode());
            break;
        }
    }
    return array("result"=>"success");
}

jQueryスクリプト

// to use surround anchor tags with div (id=colors). Set color or scheme id as href value. On click the item is posted to the web service.
// To do improve response handling from webservice.

$(document).ready(function(){
    $("#img a").live("click", function(event) {
        event.preventDefault();
        var item = $(this).attr( 'href' );
        var rev = $(this).attr('rev');
        var action ="add";
        if (rev == "1") {
            action = "add";
            $(this).attr('rev',"2");
        }
        else {          
            action = "remove";
            $(this).attr('rev',"1");
        }
        var jqxhr = $.post("webservice.php", { action: action, color: item }, function(data) {
            var result=data.result;
            if (result!="success") {
                alert(result);
            }
        }, "json")
        .error(function() {         
            alert("error: unable to contact web service"); 
        });
    });
});
4

1 に答える 1

2

この行は間違っています。preg_matchに2番目のパラメーターを指定する代わりに、連結しています。

preg_match("/^[A-Fa-f0-9]{6}$/".$color)

preg_match("/^[A-Fa-f0-9]{6}$/", $color)
于 2012-11-05T15:09:11.363 に答える