From 6086c63148f7f859da29280377861166a7eab387 Mon Sep 17 00:00:00 2001 From: lolcat Date: Tue, 5 May 2026 03:32:45 -0400 Subject: extract_json fix --- lib/fuckhtml.php | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'lib') diff --git a/lib/fuckhtml.php b/lib/fuckhtml.php index 9018627..143d113 100644 --- a/lib/fuckhtml.php +++ b/lib/fuckhtml.php @@ -553,28 +553,21 @@ class fuckhtml{ case "\"": case "'": - if( - $i !== 0 && // only check if a quote could be there - ( - ( - $json[$i - 1] === "\\" && - ( - $i === 2 || - $json[$i - 2] === "\\" - ) - ) || - $json[$i - 1] !== "\\" - ) - ){ - // found a non-escaped quote - + // count preceding backslashes + $bsCount = 0; + $j = $i - 1; + + while($j >= 0 && $json[$j] === "\\"){ + $bsCount++; + $j--; + } + + // quote is NOT escaped if even number of backslashes + if($bsCount % 2 === 0){ if($in_quote === null){ - // open quote $in_quote = $json[$i]; - }elseif($in_quote === $json[$i]){ - // close quote $in_quote = null; } -- cgit v1.2.3