| @@ -37,8 +37,9 @@ | ||
| 37 | 37 | * Parse a string containing a serialized data structure. |
| 38 | 38 | * This is the initial entry point into the recursive parser. |
| 39 | 39 | * |
| 40 | 40 | * @param string $string |
| 41 | + * | |
| 41 | 42 | * @return mixed |
| 42 | 43 | */ |
| 43 | 44 | public function parse( $string ) { |
| 44 | 45 | $unserialized_data = $this->do_parse( new FrmStringReaderHelper( $string ) ); |
| @@ -55,12 +56,13 @@ | ||
| 55 | 56 | * |
| 56 | 57 | * @since 6.20 |
| 57 | 58 | * |
| 58 | 59 | * @param mixed $value |
| 60 | + * | |
| 59 | 61 | * @return bool |
| 60 | 62 | */ |
| 61 | 63 | private function serialized_value_is_valid( $value ) { |
| 62 | - return ! is_string( $value ) || strpos( $value, ';s:' ) === false; | |
| 64 | + return ! is_string( $value ) || ! str_contains( $value, ';s:' ); | |
| 63 | 65 | } |
| 64 | 66 | |
| 65 | 67 | /** |
| 66 | 68 | * @since 6.20 |
| @@ -65,8 +67,9 @@ | ||
| 65 | 67 | /** |
| 66 | 68 | * @since 6.20 |
| 67 | 69 | * |
| 68 | 70 | * @param string $string |
| 71 | + * | |
| 69 | 72 | * @return bool |
| 70 | 73 | */ |
| 71 | 74 | private function serialized_string_is_invalid( $string ) { |
| 72 | 75 | $invalid_substrings = array( |
| @@ -74,9 +77,9 @@ | ||
| 74 | 77 | ';s:";', |
| 75 | 78 | ); |
| 76 | 79 | |
| 77 | 80 | foreach ( $invalid_substrings as $invalid ) { |
| 78 | - if ( strpos( $string, $invalid ) !== false ) { | |
| 81 | + if ( str_contains( $string, $invalid ) ) { | |
| 79 | 82 | return true; |
| 80 | 83 | } |
| 81 | 84 | } |
| 82 | 85 | |
| @@ -86,8 +89,9 @@ | ||
| 86 | 89 | /** |
| 87 | 90 | * This is the recursive parser. |
| 88 | 91 | * |
| 89 | 92 | * @param FrmStringReaderHelper $string |
| 93 | + * | |
| 90 | 94 | * @return array|bool|float|int|string|null |
| 91 | 95 | */ |
| 92 | 96 | private function do_parse( $string ) { |
| 93 | 97 | // May be : or ; as a terminator, depending on what the data type is. |
| @@ -117,8 +121,9 @@ | ||
| 117 | 121 | } |
| 118 | 122 | |
| 119 | 123 | /** |
| 120 | 124 | * @param FrmStringReaderHelper $string |
| 125 | + * | |
| 121 | 126 | * @return array |
| 122 | 127 | */ |
| 123 | 128 | private function parse_array( $string ) { |
| 124 | 129 | // Associative array: a:length:{[index][value]...} |
| @@ -127,13 +132,14 @@ | ||
| 127 | 132 | // Eat the opening "{" of the array. |
| 128 | 133 | $string->skip_next_character(); |
| 129 | 134 | |
| 130 | 135 | $val = array(); |
| 136 | + | |
| 131 | 137 | for ( $i = 0; $i < $count; $i++ ) { |
| 132 | 138 | $array_key = $this->do_parse( $string ); |
| 133 | 139 | $array_value = $this->do_parse( $string ); |
| 134 | 140 | |
| 135 | - if ( ! is_array( $array_key ) ) { | |
| 141 | + if ( ! is_array( $array_key ) && null !== $array_key ) { | |
| 136 | 142 | $val[ $array_key ] = $array_value; |
| 137 | 143 | } |
| 138 | 144 | } |
| 139 | 145 | |
| @@ -144,8 +150,9 @@ | ||
| 144 | 150 | } |
| 145 | 151 | |
| 146 | 152 | /** |
| 147 | 153 | * @param FrmStringReaderHelper $string |
| 154 | + * | |
| 148 | 155 | * @return string |
| 149 | 156 | */ |
| 150 | 157 | private function parse_string( $string ) { |
| 151 | 158 | $len = (int) $string->read_until( ':' ); |
| @@ -158,8 +165,9 @@ | ||
| 158 | 165 | } |
| 159 | 166 | |
| 160 | 167 | /** |
| 161 | 168 | * @param FrmStringReaderHelper $string |
| 169 | + * | |
| 162 | 170 | * @return int |
| 163 | 171 | */ |
| 164 | 172 | private function parse_int( $string ) { |
| 165 | 173 | return (int) $string->read_until( ';' ); |
| @@ -166,8 +174,9 @@ | ||
| 166 | 174 | } |
| 167 | 175 | |
| 168 | 176 | /** |
| 169 | 177 | * @param FrmStringReaderHelper $string |
| 178 | + * | |
| 170 | 179 | * @return float |
| 171 | 180 | */ |
| 172 | 181 | private function parse_float( $string ) { |
| 173 | 182 | return (float) $string->read_until( ';' ); |
| @@ -174,8 +183,9 @@ | ||
| 174 | 183 | } |
| 175 | 184 | |
| 176 | 185 | /** |
| 177 | 186 | * @param FrmStringReaderHelper $string |
| 187 | + * | |
| 178 | 188 | * @return bool |
| 179 | 189 | */ |
| 180 | 190 | private function parse_bool( $string ) { |
| 181 | 191 | // Boolean is 0 or 1. |