reemplazar el carácter multibyte utf8 en php

Estoy intentando pregregar el carácter multibyte para euro en UTF (mostrado como ⬠en mi html) a "$" y el * para un "@"

$orig = "2 **** reviews  ⬠19,99 price";
$orig = mb_ereg_replace(mb_convert_encoding('€', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);
$orig = preg_replace("/[\$\;\?\!\{\}\(\)\[\]\/\*\>\<]/", "@", $orig);
$a = htmlentities($orig);
$b = html_entity_decode($a);

El "*" está siendo reemplazado pero no el "â¬" .......

También traté de reemplazarlo con

$orig = preg_replace("/[\xe2\x82\xac]/", "$", $orig);

No convierte tampoco ...

Otro plan que no funcionó:

$orig= mb_ereg_replace(mb_convert_encoding('€', 'UTF-8', 'HTML-ENTITIES'), "$", $orig);

Brrr alguien sabe cómo deshacerse de este carácter utf8 euro:

echo html_entity_decode('€');

(me vuelve loco)

0
desde $ orig = str_replace (html_entity_decode ('& euro;'), '$', $ orig); aparece un error: "error de sintaxis, inesperado", ""
agregado el autor Mark Boos, fuente
Lol, miré esto por tanto tiempo que me perdí completamente, fue otra línea ... ¡Así que funciona! Una cosa; ¿Por qué no puedo hacer que esto funcione con preg_replace ..? Muchas gracias por cierto!
agregado el autor Mark Boos, fuente
¿No str_replace (html_entity_decode ('& euro;'), '$', $ source) funciona?
agregado el autor Mathieu Dumoulin, fuente
Tu error de sintaxis tiene que ser de otra parte, acabo de usar el código en mi servidor y funciona bien, no hay ningún error de sintaxis ... ¿Seguro que copiaste las cosas tal como están?
agregado el autor Mathieu Dumoulin, fuente
No sé, solo hago expresiones regulares básicas, tal vez alguien más pueda ayudarte en esa parte
agregado el autor Mathieu Dumoulin, fuente

3 Respuestas

Pegando mi comentario aquí como una respuesta para que pueda marcarlo!

No lo haría

str_replace(html_entity_decode('€'), '$', $source)

¿trabajo?

0
agregado

Esto podría ser causado por dos razones:

  1. The actual source text is UTF8 encoded, but your PHP code not. You can solve this by just using this line and save your file UTF8 encoded (try using notepad++).

    str_replace('€', '$', $source);

  2. The source text is corrupted: multibyte characters are converted to latin1 (wrong database charset?). You can try to convert them back to latin1:

    str_replace('€', '$', utf8_decode($source))

0
agregado

En su cadena $ orig no tiene el símbolo del euro. Cuando ejecuto este archivo php:

<?php
$orig = "â¬";
for($i=0; $i

Por cierto, si el archivo UTF-8 que contiene € se muestra como latin-1, debe obtener: â,¬ y no ⬠como en tu ejemplo.

De hecho, tienes problemas con la codificación y la conversión entre codificaciones. Si intentas guardar â,¬ en latin1, se perderá el caracter del medio (por ejemplo, mi Komodo me alertará y luego reemplazará , con ? ) En otras palabras, de alguna manera dañó su signo de € - y luego trató de reemplazarlo, ya que se completó. :RE

0
agregado
PHP - Comunidad española
PHP - Comunidad española
9 de los participantes

Enlace para invitaciones: https://t.me/joinchat/B2gdShUFvCner-RgqRF43A En este grupo hablamos de PHP. Partner: es.switch-case.com