奇怪的正则表达式问题 - 适用于PHP的调试方法

时间:2012-11-05 14:25:05

标签: php jquery regex

任何人都可以解释为什么这个正则表达式失败了吗?它适用于在线RegEx测试人员

http://www.spaweditor.com/scripts/regex/index.php使用PHP preg_match和我一样。

以下是几乎所有相关代码。

是的正则表达式工作正常,但PHP代码没有。我需要记住什么东西应该工作,而不是它通常是一个错字。在这种情况下,我通过键入.而不是,将我的模式连接到我的字符串,我发现这是非常难以注意到的错字。因此,我无法找到的语法错误的一个技巧是重新键入有问题的代码。当然在这种情况下我的拼写错误没有导致语法无效。

我可能应该做的另一件事是检查apache错误日志,因为preg_match接收到错误数量的参数的事实应该导致错误。

我是新手使用ajax调用返回json的php脚本,我不习惯看不到生成的php错误。在使用java客户端时,我总是使用php curl客户端来测试webservice的响应。我很匆忙,我跳过了这个项目的那一步。

您使用什么方法来正确调试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"); 
        });
    });
});

1 个答案:

答案 0 :(得分:2)

这一行是错的,你是连接而不是给preg_match第二个参数:

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

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