with sustituir stript reemplazar quitar especiales clean caracteres cadenas php encoding character-encoding str-replace

php - sustituir - No se puede reemplazar £ con & libra de cadena



stript tags php (4)

Tengo una cadena HTML que contiene £ signos, por alguna razón no puedo reemplazarlos. Supongo que este es un problema de codificación, aunque no sé cómo. El sitio está usando ISO-8859-1 para su codificación

$str = ''<span class="price">£89.99</span>''; var_dump(mb_detect_encoding($str, ''ISO-8859-1'', true)); // outputs ISO-8859-1 echo str_replace(array("£","&pound;"),"",$str); // nothing is removed echo htmlentities($str); // the entire string is converted, including £ to &pound;

¿Algunas ideas?

EDITAR

debería haber señalado que quiero reemplazar el £ con &pound ; - He agregado &pound temporalmente a la matriz de elementos para reemplazar en caso de que ya se haya convertido


$str = ''<span class="price">£89.99</span>''; echo str_replace("£","&pound;",$str);

Salida:

<span class="price">&pound;89.99</span>


html_entity_decode(str_replace("&pound;", "", htmlentities($str)));


Es solo una suposición, pero ¿podría ser que incluso en el sitio web de salida en la codificación ISO-8859-1, sus archivos * .php reales se guardan como utf-8? No creo que str_replace funcione correctamente con cadenas utf-8. Para probarlo, intente:

str_replace(utf8_decode("£"),"&pound;",utf8_decode($str));

Sí, si esto funciona, tus archivos * .php se guardan en codificación utf-8. Esto significa que todas las constantes de cadena están en utf-8. Probablemente vale la pena cambiar la codificación predeterminada en su IDE a ISO-8859-1


$data = str_replace("£","&pound;",utf8_encode($data)); echo $data;