Missing some chars like german umlauts after use of htmlspecialchars? That's because the third param encoding has changed it's default value in PHP 5.4 from ISO-8859-1 to UTF-8.
Possible solution #1:
Change your code from this ...
<?php htmlspecialchars( 'äöü' ); ?>
... to this:
<?php htmlspecialchars ( 'äöü' , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' ); ?>
Possible solution #2:
Create a wrapper function and replace htmlspecialchars( to i.e. isohtmlspecialchars( with your IDE/editor/shell...
Example of a wrapper function:
<?php
function isohtmlspecialchars( $str ){
return htmlspecialchars ( $str , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' );
}
?>
Cambios con versiones incompatibles
Aunque la mayoría del código existente en PHP 5 debería funcionar sin muchos cambios, por favor tome nota de algunas incompatibilidades con versiones anteriores:
- El modo seguro ya no es soportado. Cualquier aplicación que dependa del modo seguro puede necesitar ajustes, en términos de seguridad.
-
Las comillas mágicas han sido eliminadas. Las aplicaciones que dependan
de esta característica pueden necesitar ser actualizadas, para evitar cuestiones de seguridad.
get_magic_quotes_gpc() y get_magic_quotes_runtime()
ahora siempre devuelven
FALSE. set_magic_quotes_runtime() emite un error de nivelE_CORE_ERROR. - Las directivas de php.ini register_globals y register_long_arrays han sido eliminadas.
- El paso por referencia en tiempo de llamada ha sido eliminado.
- Las sentencias break y continue ya no aceptan argumentos variables (p.ej., break 1 + foo() * $bar;). Los argumentos estáticos aún funcionan, como break 2;. Como efecto secundario de este cambio break 0; y continue 0; ya no están permitidos.
-
En la extensión de fecha y hora, la zona horaria ya no puede ser
establecida usando la variable de entorno TZ. En su lugar se tiene que especificar una zona horaria usando la
opción de php.ini date.timezone o la función
date_default_timezone_set(). PHP ya no intentará adivinar la zona horaria, y en su lugar recurrirá a "UTC"
y emitirá un error de nivel
E_WARNING. -
Los índices de cadenas no numericos - p.ej. $a['foo'] donde $a es una cadena - ahora devuelven
false sobre isset() y true sobre empty(), y producen un error de nivel
E_WARNINGsi se intenta usarlos. Los índices de los tipo double, bool y null producen un error de nivelE_NOTICE. Las cadenas numéricas (p.ej. $a['2']) aún funcionan como antes. Observe que los índices como '12.3' y '5 foobar' son considerados no numéricos y producen un error de nivelE_WARNING, aunque son convertidos a 12 y 5 respectivamente, por razones de retrocompatibilidad. Nota: El siguiente código devuelve resultados diferentes. $str='abc';var_dump(isset($str['x'])); // false para PHP 5.4 o posterior, pero true para 5.3 o anterior -
Ahora, convertir un array a cadena genera un error de nivel
E_NOTICE, aunque el resultado de la conversión aún será la cadena "Array". -
Convertir
NULL,FALSE, o una cadena vacía en un objeto añadiendo una propiedad ahora emitirá un error de nivelE_WARNING, en lugar de nivelE_STRICT. - Los nombres de parámetros que cubren super globales ahora causan un error fatal. Esto prohíbe código como function foo($_GET, $_POST) {}.
- Los algoritmos hash Salsa10 y Salsa20 han sido eliminados.
-
array_combine() ahora devuelve array() en lugar de
FALSEcuando se proporcionan dos arrays vacíos como parámetros. -
Si se utiliza htmlentities() con conjuntos de caracteres asiáticos,
funcion como htmlspecialchars() - este siempre ha sido el
caso en versiones de PHP anteriores, pero ahora se emite un error de nivel
E_STRICT.
Las siguientes palabras clave ahora son reservadas, por lo que no se pueden usar como nombres de funciones, clases, etc.
Las siguientes funciones han sido eliminadas de PHP:
- define_syslog_variables()
- import_request_variables()
- session_is_registered(), session_register() y session_unregister().
- Los alias mysqli_bind_param(), mysqli_bind_result(), mysqli_client_encoding(), mysqli_fetch(), mysqli_param_count(), mysqli_get_metadata(), mysqli_send_long_data(), mysqli::client_encoding() y mysqli_stmt::stmt().
Chris ¶
4 months ago
luis at portanel dot com ¶
2 months ago
It's not a PHP version incompatibility itself, but it's important to know that Microsoft dropped the php_mssql.dll support for the "mssql_" funcitions since this version.
To connect to a MSSQL database since 5.4, one good alternative are the PDO drivers.
