From 72324fdbb1bb18f94f306a006ae18409d8527104 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Tue, 16 Apr 2019 10:03:42 -0400 Subject: [PATCH] Fix issue processwire/processwire-issues#854 --- wire/core/Sanitizer.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/wire/core/Sanitizer.php b/wire/core/Sanitizer.php index e00d8779..1d586f0c 100644 --- a/wire/core/Sanitizer.php +++ b/wire/core/Sanitizer.php @@ -271,7 +271,14 @@ class Sanitizer extends Wire { if($needsWork) { $value = str_replace(array("'", '"'), '', $value); // blank out any quotes - $value = filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_NO_ENCODE_QUOTES); + $_value = $value; + $filters = FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_NO_ENCODE_QUOTES; + $value = filter_var($value, FILTER_SANITIZE_STRING, $filters); + if(!strlen($value)) { + // if above filter blanked out the string, try with brackets already replaced + $value = str_replace(array('<', '>', '«', '»', '‹', '›'), $replacementChar, $_value); + $value = filter_var($value, FILTER_SANITIZE_STRING, $filters); + } $hyphenPos = strpos($extras, '-'); if($hyphenPos !== false && $hyphenPos !== 0) { // if hyphen present, ensure it's first (per PCRE requirements)