-3

谁能解释为什么这个正则表达式失败?它适用于在线 RegEx 测试器

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

这里几乎是所有相关的代码。

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

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

我不习惯使用 ajax 调用返回 json 的 php 脚本,而且我不习惯看不到生成的 php 错误。过去在使用 java 客户端时,我一直使用 php curl 客户端来测试 web 服务的响应。我很着急,跳过了这个项目的那一步。

您使用什么方法来正确调试您的 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 第二个参数:

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

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