Fix parenthesis escaping bug (#5633)

fix https://github.com/FreshRSS/FreshRSS/issues/5632
In the SQL search, parentheses should not be escaped. Escaped parenthesis in the SQL search were tolerated by PostgreSQL but not by SQLite.
This commit is contained in:
Alexandre Alapetite
2023-09-05 17:33:38 +02:00
committed by GitHub
parent 1c7c1016f4
commit 2e1d45a88d
3 changed files with 9 additions and 3 deletions

View File

@@ -233,7 +233,7 @@ class FreshRSS_BooleanSearch {
private function parseOrSegments(string $input): void {
$input = trim($input);
if ($input == '') {
if ($input === '') {
return;
}
$splits = preg_split('/\b(OR)\b/i', $input, -1, PREG_SPLIT_DELIM_CAPTURE) ?: [];

View File

@@ -73,6 +73,7 @@ class FreshRSS_Search {
public function __construct(string $input) {
$input = self::cleanSearch($input);
$input = self::unescape($input);
$this->raw_input = $input;
$input = $this->parseNotEntryIds($input);
@@ -662,4 +663,9 @@ class FreshRSS_Search {
}
return trim($input);
}
/** Remove escaping backslashes for parenthesis logic */
private static function unescape(string $input): string {
return str_replace(['\\(', '\\)'], ['(', ')'], $input);
}
}

View File

@@ -330,8 +330,8 @@ class SearchTest extends PHPUnit\Framework\TestCase {
[
'intitle:"\\(test\\)"',
'(e.title LIKE ? )',
['%\\(test\\)%'],
]
['%(test)%'],
],
];
}
}