preg_match函数不使用斜杠

时间:2016-01-20 05:42:23

标签: php preg-match

我有一个比较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); } }); 没有,因为斜杠即使它存在于两个数组中也是如此。

2 个答案:

答案 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!

这是一个有效的演示:

http://ideone.com/BLEsIy