$var_name ) { $var_name = trim( $var_name ); if ( empty( $var_name ) || empty( $json[3][ $key ] ) ) { continue; } $var_json = trim( $json[3][ $key ] ); $texts = array_merge( $texts, wplng_parse_json( $var_json, array( $var_name ) ) ); } } return $texts; } /** * Parse JSON in i18n script * * You can use wplng_parse_js_json_in_i18n_script( $js ) * to check if the string is a i18n script * * @param string $js * @return array Texts */ function wplng_parse_js_json_in_i18n_script( $js ) { $texts = array(); $json = array(); preg_match_all( '#\(\s?["|\'](.*)["|\'],\s?(.*)\s?\);#Ui', $js, $json ); if ( ! empty( $json[1] ) && is_array( $json[1] ) ) { foreach ( $json[1] as $key => $var_name ) { $var_name = trim( $var_name ); if ( empty( $var_name ) || empty( $json[2][ $key ] ) ) { continue; } $var_json = trim( $json[2][ $key ] ); $texts = array_merge( $texts, wplng_parse_json( $var_json, array( $var_name ) ) ); } } return $texts; } /** * Parse JSON encoded as URL * * @param string $js * @return array Texts */ function wplng_parse_js_json_encoded_as_url( $js ) { $texts = array(); $json = array(); /** * URL encoded JSON */ preg_match_all( '#JSON\.parse\(\sdecodeURIComponent\(\s\'(.*)\'\s\)\s\)#Ui', $js, $json ); if ( ! empty( $json[1] ) && is_array( $json[1] ) ) { foreach ( $json[1] as $key => $encoded_json ) { $var_json = urldecode( $encoded_json ); $texts = array_merge( $texts, wplng_parse_json( $var_json, array( 'EncodedAsURL' ) ) ); } } return $texts; }