任何人都可以解释为什么这个正则表达式失败了吗?它适用于在线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");
});
});
});
答案 0 :(得分:2)
这一行是错的,你是连接而不是给preg_match第二个参数:
preg_match("/^[A-Fa-f0-9]{6}$/".$color)
preg_match("/^[A-Fa-f0-9]{6}$/", $color)