How to escape only certain characters

柔情痞子 提交于 2019-12-22 08:34:47

问题


php function preg_quote escapes these characters . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

Could you please suggest what I could use to escape these characters: + - && || ! ( ) { } [ ] ^ " ~ * ? : /


Edited (as requested by "on hold"):

I'm implementing a Solr search and it says:

Solr gives the following characters special meaning when they appear in a query:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : /

To make Solr interpret any of these characters literally, rather as a special character, precede the character with a backslash character .


回答1:


This may help you:

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

http://ideone.com/EYV1ID




回答2:


Maybe not the best approach but will work:

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



回答3:


Working function

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


来源:https://stackoverflow.com/questions/23265654/how-to-escape-only-certain-characters

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!