如何只逃避某些角色

时间:2014-04-24 09:59:19

标签: php regex escaping

php function preg_quote转义这些字符. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

你能否建议我可以用来逃避这些角色:+ - && || ! ( ) { } [ ] ^ " ~ * ? : /


已修改(根据“暂停”的要求):

我正在实施Solr搜索,并说:

  

Solr出现时会给出以下字符特殊含义   在查询中:
  + - &amp;&amp; || ! (){} [] ^“〜*?:/

     

要使Solr在字面上解释任何这些字符,而不是作为一个特殊字符,先于   带有反斜杠字符的字符。

3 个答案:

答案 0 :(得分:4)

这可能会对您有所帮助:

<?php
$subject = "+ - && || ! ( ) { } [ ] ^ \" ~ * ? : /";
$result = preg_replace('%([+\-&|!(){}[\]^"~*?:/]+)%', '\\\\$1', $subject);
echo $result;
?>

http://ideone.com/EYV1ID

答案 1 :(得分:1)

也许不是最好的方法,但会起作用:

str_replace('+','\+',$MyString);
str_replace('-','\-',$MyString);
...............................;
...............................;

答案 2 :(得分:0)

工作职能

function escapeWildcards($s){
    $escapeChars = [ '%', '_'];
    foreach ($escapeChars as $escapeChar){
        $s = str_replace($escapeChar, '\\'.$escapeChar, $s);
    }
    return $s;
}