Przeglądaj źródła

Fix regex parentheses of referenced search (#6950)

fix https://github.com/FreshRSS/FreshRSS/issues/6949
Alexandre Alapetite 1 rok temu
rodzic
commit
493b8d5ce2
1 zmienionych plików z 3 dodań i 3 usunięć
  1. 3 3
      app/Models/BooleanSearch.php

+ 3 - 3
app/Models/BooleanSearch.php

@@ -79,7 +79,7 @@ class FreshRSS_BooleanSearch {
 					if (!empty($queries[$name])) {
 						$fromS[] = $matches[0][$i];
 						if ($allowUserQueries) {
-							$toS[] = '(' . $queries[$name] . ')';
+							$toS[] = '(' . self::escapeRegexParentheses($queries[$name]) . ')';
 						} else {
 							$toS[] = '';
 						}
@@ -120,7 +120,7 @@ class FreshRSS_BooleanSearch {
 					if (!empty($queries[$id])) {
 						$fromS[] = $matches[0][$i];
 						if ($allowUserQueries) {
-							$toS[] = '(' . $queries[$id] . ')';
+							$toS[] = '(' . self::escapeRegexParentheses($queries[$id]) . ')';
 						} else {
 							$toS[] = '';
 						}
@@ -137,7 +137,7 @@ class FreshRSS_BooleanSearch {
 	 * Temporarily escape parentheses used in regex expressions.
 	 */
 	public static function escapeRegexParentheses(string $input): string {
-		return preg_replace_callback('#(?<=[\\s(:!-]|^)(?<![\\\\])/.*?(?<!\\\\)/[im]*#',
+		return preg_replace_callback('#(?<=[\\s(:!-]|^)(?<![\\\\])/.+?(?<!\\\\)/[im]*#',
 			fn(array $matches): string => str_replace(['(', ')'], ['\\u0028', '\\u0029'], $matches[0]),
 			$input
 		) ?? '';