谁能解释为什么这个正则表达式失败?它适用于在线 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");
});
});
});