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("£","£"),"",$str); // nothing is removed
echo htmlentities($str); // the entire string is converted, including £ to £
¿Algunas ideas?
EDITAR
debería haber señalado que quiero reemplazar el £ con £
; - He agregado £
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("£","£",$str);
Salida:
<span class="price">£89.99</span>
html_entity_decode(str_replace("£", "", 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("£"),"£",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("£","£",utf8_encode($data));
echo $data;