Conozco este comentario PHP.net. Me gustaría tener una herramienta similar tr
a PHP tal que pueda ejecutar simplemente
tr -d " " ""
Ejecuto sin éxito la función php_strip_whitespace
por
$tags_trimmed = php_strip_whitespace($tags);
Ejecuto la función regex también sin éxito
$tags_trimmed = preg_replace(" ", "", $tags);
php
string
whitespace
Léo Léopold Hertz 준영
fuente
fuente
Respuestas:
Una expresión regular no tiene en cuenta los caracteres UTF-8 de forma predeterminada. El
\s
metacarácter solo representa el conjunto latino original. Por lo tanto, el siguiente comando solo elimina tabulaciones, espacios, retornos de carro y nuevas líneas// http://stackoverflow.com/a/1279798/54964 $str=preg_replace('/\s+/', '', $str);
Con UTF-8 convirtiéndose en la corriente principal, esta expresión fallará o se detendrá con más frecuencia cuando alcance los nuevos caracteres utf-8, dejando espacios en blanco que
\s
no se pueden explicar.Para hacer frente a los nuevos tipos de espacios en blanco introducidos en unicode / utf-8, se requiere una cadena más extensa para hacer coincidir y eliminar los espacios en blanco modernos.
Debido a que las expresiones regulares por defecto no reconocen caracteres multibyte, solo se puede usar una metacadena delimitada para identificarlos, para evitar que los segmentos de bytes sean alterados en otros caracteres utf-8 (
\x80
en el conjunto cuádruple podría reemplazar todos\x80
los subbytes entre comillas tipográficas)$cleanedstr = preg_replace( "/(\t|\n|\v|\f|\r| |\xC2\x85|\xc2\xa0|\xe1\xa0\x8e|\xe2\x80[\x80-\x8D]|\xe2\x80\xa8|\xe2\x80\xa9|\xe2\x80\xaF|\xe2\x81\x9f|\xe2\x81\xa0|\xe3\x80\x80|\xef\xbb\xbf)+/", "_", $str );
Esto tiene en cuenta y elimina pestañas, nuevas líneas, pestañas verticales, avances de formulario, retornos de carro, espacios y, además, de aquí :
Muchos de estos causan estragos en los archivos xml cuando se exportan desde herramientas automatizadas o sitios que estropean las búsquedas de texto, el reconocimiento y se pueden pegar de manera invisible en el código fuente PHP, lo que hace que el analizador salte al siguiente comando (separadores de párrafo y línea), lo que genera líneas. del código que se debe omitir, lo que da como resultado errores intermitentes e inexplicables a los que comenzamos a denominar "enfermedades de transmisión textual"
[Ya no es seguro copiar y pegar desde la web. Utilice un escáner de caracteres para proteger su código. lol]
fuente
trim()
debería ser la respuesta correctau
bandera en la expresión regular?Para quitar cualquier espacio en blanco, puede usar una expresión regular
$str=preg_replace('/\s+/', '', $str);
Vea también esta respuesta para algo que pueda manejar espacios en blanco en cadenas UTF-8.
fuente
+
después dels
? No lo necesitas para esto.A veces, necesitaría eliminar espacios en blanco consecutivos. Puedes hacerlo así:
$str = "My name is"; $str = preg_replace('/\s\s+/', ' ', $str);
Salida:
fuente
$string = str_replace(" ", "", $string);
Creo que preg_replace estaría buscando algo como
[:space:]
fuente
Puede usar la función de recorte de php para recortar ambos lados (izquierdo y derecho)
trim($yourinputdata," ");
O
trim($yourinputdata);
También puedes usar
ltrim() - Removes whitespace or other predefined characters from the left side of a string rtrim() - Removes whitespace or other predefined characters from the right side of a string
Sistema: PHP 4,5,7
Documentos: http://php.net/manual/en/function.trim.php
fuente
Si desea eliminar todos los espacios en blanco en todas partes de $ tags, ¿por qué no solo:
str_replace(' ', '', $tags);
Si desea eliminar nuevas líneas y eso requeriría un poco más ...
fuente
Cualquier opción posible es utilizar un contenedor de archivos personalizado para simular variables como archivos. Puedes lograrlo usando esto:
1) En primer lugar, registre su contenedor (solo una vez en el archivo, utilícelo como session_start ()):
stream_wrapper_register('var', VarWrapper);
2) Luego defina su clase contenedora (está escrito muy rápido, no es completamente correcto, pero funciona):
class VarWrapper { protected $pos = 0; protected $content; public function stream_open($path, $mode, $options, &$opened_path) { $varname = substr($path, 6); global $$varname; $this->content = $$varname; return true; } public function stream_read($count) { $s = substr($this->content, $this->pos, $count); $this->pos += $count; return $s; } public function stream_stat() { $f = fopen(__file__, 'rb'); $a = fstat($f); fclose($f); if (isset($a[7])) $a[7] = strlen($this->content); return $a; } }
3) Luego use cualquier función de archivo con su contenedor en el protocolo var: // (también puede usarlo para incluir, requerir, etc.):
global $__myVar; $__myVar = 'Enter tags here'; $data = php_strip_whitespace('var://__myVar');
Nota: No olvide tener su variable en el alcance global (como global $ __ myVar)
fuente
global $$varname;
Qué horrible fue en 2013Puedes hacerlo usando
ereg_replace
$str = 'This Is New Method Ever'; $newstr = ereg_replace([[:space:]])+', '', trim($str)): echo $newstr // Result - ThisIsNewMethodEver
fuente
también usas la
preg_replace_callback
función. y esta función es idéntica a su hermanapreg_replace
excepto que puede aceptar una función de devolución de llamada que le da más control sobre cómo manipular su salida.$str = "this is a string"; echo preg_replace_callback( '/\s+/', function ($matches) { return ""; }, $str );
fuente
preg_replace
?$string = trim(preg_replace('/\s+/','',$string));
fuente
Esta es una publicación antigua, pero la respuesta más corta no aparece aquí, así que la estoy agregando ahora.
strtr($str,[' '=>'']);
Otra forma común de "despellejar a este gato" sería usar explotar e implosionar de esta manera
implode('',explode(' ', $str));
fuente
Es una publicación antigua pero se puede hacer así:
if(!function_exists('strim')) : function strim($str,$charlist=" ",$option=0){ $return=''; if(is_string($str)) { // Translate HTML entities $return = str_replace(" "," ",$str); $return = strtr($return, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); // Choose trim option switch($option) { // Strip whitespace (and other characters) from the begin and end of string default: case 0: $return = trim($return,$charlist); break; // Strip whitespace (and other characters) from the begin of string case 1: $return = ltrim($return,$charlist); break; // Strip whitespace (and other characters) from the end of string case 2: $return = rtrim($return,$charlist); break; } } return $return; } endif;
Las funciones estándar trim () pueden ser problemáticas cuando se trata de entidades HTML. Es por eso que escribí la función "Super Trim" que se usa para manejar este problema y también puede elegir recortar desde el principio, el final o el lado de la cabina de la cuerda.
fuente
Una forma sencilla de eliminar espacios de toda la cadena es utilizar la función de explosión e imprimir toda la cadena mediante un bucle for.
$text = $_POST['string']; $a=explode(" ", $text); $count=count($a); for($i=0;$i<$count; $i++){ echo $a[$i]; }
fuente
El argumento \ s regex no es compatible con cadenas de varios bytes UTF-8.
Este PHP RegEx es uno que escribí para resolver esto usando argumentos basados en PCRE (Expresiones regulares compatibles con Perl) como reemplazo de cadenas UTF-8:
function remove_utf8_whitespace($string) { return preg_replace('/\h+/u','',preg_replace('/\R+/u','',$string)); }
- Ejemplo de uso -
Antes de:
$string = " this is a test \n and another test\n\r\t ok! \n"; echo $string; this is a test and another test ok! echo strlen($string); // result: 43
Después:
$string = remove_utf8_whitespace($string); echo $string; thisisatestandanothertestok! echo strlen($string); // result: 28
Listado de argumentos de PCRE
Fuente: https://www.rexegg.com/regex-quickstart.html
Character Legend Example Sample Match \t Tab T\t\w{2} T ab \r Carriage return character see below \n Line feed character see below \r\n Line separator on Windows AB\r\nCD AB CD \N Perl, PCRE (C, PHP, R…): one character that is not a line break \N+ ABC \h Perl, PCRE (C, PHP, R…), Java: one horizontal whitespace character: tab or Unicode space separator \H One character that is not a horizontal whitespace \v .NET, JavaScript, Python, Ruby: vertical tab \v Perl, PCRE (C, PHP, R…), Java: one vertical whitespace character: line feed, carriage return, vertical tab, form feed, paragraph or line separator \V Perl, PCRE (C, PHP, R…), Java: any character that is not a vertical whitespace \R Perl, PCRE (C, PHP, R…), Java: one line break (carriage return + line feed pair, and all the characters matched by \v)
fuente
Hay algunos tipos especiales de espacios en blanco en forma de etiquetas. Necesitas usar
$str=strip_tags($str);
para eliminar etiquetas redundantes, etiquetas de error, para llegar primero a una cadena normal.
Y use
$str=preg_replace('/\s+/', '', $str);
Es trabajo para mi.
fuente