问题
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