我有一个比较2个字符串的函数。它完美地工作,除非字符串包含斜杠function in_array_r($item , $array){
return preg_match('/"'. preg_quote($item, "/") .'"/i' , json_encode($array));
}
。我该怎么做才能解决这个问题?
if(in_array_r($row['name'], $products)){
//
}
我按照以下方式运行:
silverware with golden spoon new
所以silverware with golden spoon / new
有效,而module.controller("RouteController", function($http,$scope, $routeParams) {
$http.get('welcome/phones').success(function(data) {
$scope.phones = data;
});
$scope.formData = {};
$scope.form = {};
$scope.saveInfo = function() {
$scope.formData = $scope.form;
console.log( $scope.formData);
$http.post('welcome/save', $scope.formData);
}
});
没有,因为斜杠即使它存在于两个数组中也是如此。
答案 0 :(得分:0)
可能你必须使用这样的转义字符:
silverware with golden spoon \/ new
这将跳过\符号后面的任何字符。
答案 1 :(得分:0)
我会结合使用两件事来解决你的问题。
首先,如果您知道数据中经常会出现斜杠,则应选择不同的分隔符。我通常使用波浪线而不是正斜杠,因为我解析了很多网址而且我已经厌倦了一直担心会逃避它们。
我要做的第二件事是在您的JSON_UNESCAPED_SLASHES
上使用json_encode
标记。这是我的意思的一个例子:
<?php
$products = array('silverware with golden spoon new', 'silverware with golden spoon / new');
$item = 'silverware with golden spoon / new';
function in_array_r($item , $array){
return preg_match('~"'.$item.'"~i', json_encode($array, JSON_UNESCAPED_SLASHES));
}
if(in_array_r($item, $products)){
print "Match found!";
}
else {
print "No match was found.";
}
这将输出:
Match found!
这是一个有效的演示: