<?php
if (!defined('JSON_UNESCAPED_UNICODE')) {
define('JSON_UNESCAPED_SLASHES', 64);
define('JSON_UNESCAPED_UNICODE', 256);
}
$original = 'foo/bar';
$q = array('query_string' => escapeTerm($original));
$j = json_encode($q, JSON_UNESCAPED_SLASHES);
var_dump($j);
function escapeTerm($term)
{
$result = $term;
// \ escaping has to be first, otherwise escaped later once again
$chars = array('\\', '+', '-', '&&', '||', '!', '(', ')', '{', '}', '[', ']', '^', '"', '~', '*', '?', ':');
foreach ($chars as $char) {
$result = str_replace($char, '\\' . $char, $result);
}
// since elastisearch uses lucene 4.0 / needs to be escaped by \\
$result = str_replace('/', '\\\\/', $result);
return $result;
}
preferences:
34.38 ms | 402 KiB | 5 Q