diff --git a/lib/fuckhtml.php b/lib/fuckhtml.php
index 3ea256f..08ca8e3 100644
--- a/lib/fuckhtml.php
+++ b/lib/fuckhtml.php
@@ -551,6 +551,33 @@ class fuckhtml{
switch($json[$i]){
+ case "\"":
+ case "'":
+ if(
+ $i > 2 ||
+ (
+ (
+ $json[$i - 1] === "\\" &&
+ $json[$i - 2] === "\\"
+ ) ||
+ $json[$i - 1] !== "\\"
+ )
+ ){
+ // found a non-escaped quote
+
+ if($in_quote === null){
+
+ // open quote
+ $in_quote = $json[$i];
+
+ }elseif($in_quote === $json[$i]){
+
+ // close quote
+ $in_quote = null;
+ }
+ }
+ break;
+
case "[":
if($in_quote === null){
@@ -586,37 +613,20 @@ class fuckhtml{
$object_level--;
}
break;
-
- case "\"":
- case "'":
- if(
- $i !== 0 &&
- $json[$i - 1] !== "\\"
- ){
- // found a non-escaped quote
-
- if($in_quote === null){
-
- // open quote
- $in_quote = $json[$i];
- }elseif($in_quote === $json[$i]){
-
- // close quote
- $in_quote = null;
- }
- }
- break;
}
if(
- $start !== null &&
$array_level === 0 &&
- $object_level === 0
+ $object_level === 0 &&
+ $start !== null
){
return substr($json, $start, $i - $start + 1);
break;
}
}
+
+ // fallback
+ return "[]";
}
}