Como eliminar espaços em branco (caractere especial)?

  • Autor Autor Magali Mejia
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
M

Magali Mejia

Delta
Programador
Hola, recientemente me esta pasando un problema que nunca me habia pasado. me da mucha lata preguntar en stackoverflow por sus reglas y bla bla.

El problema es el siguiente:
necesito remover los espacios del siguiente string, el problema es que lleva un caracter invisible al final:

Inserir CODE, HTML ou PHP:
АЙСКРИН - МЕЖДУ НАМИ ️

si uso str_replace(" ","-",$str); obtengo lo siguiente:

Inserir CODE, HTML ou PHP:
АЙСКРИН---МЕЖДУ-НАМИ ️

Si se fijan el espacio del final del string no es un espacio cualquiera, me paraece que es un carácter unicode al cual no se como llegar para eliminarlo del string

El espacio del final no se reemplaza ya que es un carácter especial, necesito usar preg_replace para no solo eliminar este "espacio en blanco" sino todo carácter que sea parecido a el, como este por ejemplo: -️ (que parece un guion común, pero no lo es).
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
intenta con trim
Inserir CODE, HTML ou PHP:
<?php
$a = trim("АЙСКРИН---МЕЖДУ-НАМИ "," \t\n\r");
echo $a;
?>
 
intenta con trim
Inserir CODE, HTML ou PHP:
<?php
$a = trim("АЙСКРИН---МЕЖДУ-НАМИ "," \t\n\r");
echo $a;
?>

Gracias por intentar ayudar, estas usando un espacio común al final del string, logicamente va a funcionar, si usas mi string tal como esta (copialo y pegalo), no funcionara, repito no es un espacio en blanco, es un caracter unicode.

intenta correr esto

Inserir CODE, HTML ou PHP:
<?php
$a = trim("АЙСКРИН---МЕЖДУ-НАМИ ️"," \t\n\r");
echo $a;
?>

no habrán cambios.

Sigo recibiendo ideas.
 
Y si simplemente tomas la cadena y eliminas el último caracter? Y después si necesitas algo en ese espacio lo añades?
 
Dime para que es bro.
O en ese caso podrias ponerlo haci

PHP:
$str = "АЙСКРИН - МЕЖДУ-НАМИ ";

echo str_replace(array(" - ", "---"), array("-", "-"), $str);

echo "<br>";
//Solucion más practica para quitar el espacio final o cualquier otro caracter.
echo rtrim($str, " ");
:
 
Y si simplemente tomas la cadena y eliminas el último caracter? Y después si necesitas algo en ese espacio lo añades?
y si el ultimo caracter es una x por ejemplo ?, lo eliminaria. No tiene sentido

Dime para que es bro.
O en ese caso podrias ponerlo haci

PHP:
$str = "АЙСКРИН - МЕЖДУ-НАМИ ";

echo str_replace(array(" - ", "---"), array("-", "-"), $str);

echo "<br>";
//Solucion más practica para quitar el espacio final o cualquier otro caracter.
echo rtrim($str, " ");
:
parece que nadie lee que no es un espacio en blanco común, es decir, es un espacio común pero lleva un caracter invisible al final :s

En fin, llege a una solucion salomonica.
decidi usar urlencode

string original:
Inserir CODE, HTML ou PHP:
АЙСКРИН - МЕЖДУ НАМИ ️

String con urlencode:
Inserir CODE, HTML ou PHP:
%D0%90%D0%99%D0%A1%D0%9A%D0%A0%D0%98%D0%9D%20-%20%D0%9C%D0%95%D0%96%D0%94%D0%A3%20%D0%9D%D0%90%D0%9C%D0%98%20%EF%B8%8F️

Los espacios en blanco con urlencode es igual a: %20
Si se dan cuenta el espacio del final es igual a: %20%EF%B8%8F️

Se dieron cuenta que sobra ?, si %EF%B8%8F️

Ahora si uso este string:
Inserir CODE, HTML ou PHP:
hola-soy-magali-️
(que al final parece tener un guion común, pero no lo es)

string con urlencode
Inserir CODE, HTML ou PHP:
hola-soy-magali-%EF%B8%8F
que sobra ?, si %EF%B8%8F️

Esto puede suceder con cualquier carácter según veo ya que se agrega como un carácter invisible, me hubiese gustado usar preg_replace, pero ya logre lo que queria.

Entonces, la solución:

Inserir CODE, HTML ou PHP:
$string = "АЙСКРИН - МЕЖДУ НАМИ ️";
$string = urlencode($str);
$string = urldecode(str_replace("%EF%B8%8F","",$tit));
echo $string;


Gracias por leer.
 
Última edição:
Ciertamente como dices podrías usar `preg_replace`. Yo personalmente haría algo así:

PHP:
<?php

echo '<pre>';

$string = 'АЙСКРИН - МЕЖДУ НАМИ ️';

var_dump($string);

$string = preg_replace('@[\s\ ️]+@i', '-', $string);

var_dump($string);

El resultado sería el siguiente:

[code
HTML:
string(40) "АЙСКРИН - МЕЖДУ НАМИ ️"
string(37) "АЙСКРИН---МЕЖДУ-НАМИ-"
 
Ciertamente como dices podrías usar `preg_replace`. Yo personalmente haría algo así:

PHP:
<?php

echo '<pre>';

$string = 'АЙСКРИН - МЕЖДУ НАМИ ️';

var_dump($string);

$string = preg_replace('@[\s\ ️]+@i', '-', $string);

var_dump($string);

El resultado sería el siguiente:

[code
HTML:
string(40) "АЙСКРИН - МЕЖДУ НАМИ ️"
string(37) "АЙСКРИН---МЕЖДУ-НАМИ-"

El regex correcto para usar preg_replace seria el siguiente:

Inserir CODE, HTML ou PHP:
$string ="⁠maddix";

$string = preg_replace('/[x00-x08x0Bx0Cx0E-x1Fx7F-x9F]/u', '', $string);

echo $string;
 
Probaste asi?:

Inserir CODE, HTML ou PHP:
$string=preg_replace('/\xEF\xB8\x8F/', '', $string);
 
Voltar
Topo