2010-02-03 23 views
100

¿Cómo recortar una parte de una cadena y guardarla en una cadena particular en MySQL usando PHP?¿Cómo eliminar parte de una cadena?

Ejemplo cadena: "REGISTER 11223344 here"

¿Cómo puedo eliminar "11223344" de ejemplo de cadena?

+0

¿Qué lenguaje de programación es este? –

+23

dice PHP en la publicación. –

+1

@siddharth: ¿qué salida quieres? –

Respuesta

19

asumiendo 11223344 no es constante

$string="REGISTER 11223344 here"; 
$s = explode(" ",$string); 
unset($s[1]); 
$s = implode(" ",$s); 
print "$s\n"; 
+1

Eso le dará '11223344', que es (creo) lo contrario de lo que quiere. –

+1

¿Cómo es eso? Está desarmando el índice de matriz que * contiene * "11223344". –

+1

hice los ajustes después de los comentarios de Dominic. – ghostdog74

131

Si está específicamente apuntan a "11223344", a continuación, utilizar str_replace:

echo str_replace("11223344", "", "REGISTER 11223344 here"); 
14

Haga lo siguiente

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER(.*)here/','',$string); 

Esto volvería "REGISTRAR aquí"

o

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER (.*) here/','',$string); 

Esto volvería "Regístrese aquí"

+3

¿No devolvería "REGISTRAR_aquí", con dos espacios en blanco (piense en subrayar como espacios, el comentario no me permitirá dos espacios subsiguientes)? Beacuse de los espacios antes y después del "(. *)". – TechNyquist

5

substr() es una función integrada de PHP que devuelve parte de una cadena. La función substr() tomará una cadena como entrada, el formulario de índice donde desea que se recorte la cadena. y un parámetro opcional es la longitud de la subcadena. Se puede ver la documentación apropiada y el código de ejemplo en http://php.net/manual/en/function.substr.php

NOTA: índice de una cadena comienza con 0.

78

se puede utilizar str_replace(), que se define como:

str_replace($search, $replace, $subject) 

Por lo que podría escribir el código como:

$subject = 'REGISTER 11223344 here' ; 
$search = '11223344' ; 
$trimmed = str_replace($search, '', $subject) ; 
echo $trimmed ; 

Si necesita una mejor adecuación a través de expresiones regulares puede utilizar preg_replace().

+1

Si necesita una coincidencia de expresiones regulares también hay preg_replace() http://us2.php.net/manual/en/function.preg-replace.php –

5

Cuando necesite regla coincidente con base, es necesario utilizar expresiones regulares

$string = "REGISTER 11223344 here"; 
preg_match("/(\d+)/", $string, $match); 
$number = $match[1]; 

que coincidirá con el primer conjunto de números, así que si usted necesita estar más prueba específica:

$string = "REGISTER 11223344 here"; 
preg_match("/REGISTER (\d+) here/", $string, $match); 
$number = $match[1]; 
+0

preg_replace() sería mucho más fácil, ¿no? http://us2.php.net/manual/en/function.preg-replace.php –

+0

@ElijahLynn replace requiere que elimines las cosas, los cambios futuros o el ruido se romperá. Hacer esto a través de _replace pero _match continuaría funcionando. – TravisO

-1

si desea eliminar la parte de la cadena de la cadena dada esto podría ayudarlo

chop($string,'part_of_string'); 
+4

'chop' es un alias de' rtrim', que no hace esto - ver http://php.net/rtrim. –

+0

Sí, esto no funcionará. str_replace() es probablemente el más limpio. http://stackoverflow.com/a/2192329/292408 –

0

Puedes hacer esto también, si te gustan otras formas ...

function str_substract($remove, $subject){ 
    $strpos = strpos($subject, $remove); 
    return substr($subject, 0, $strpos) . substr($subject, $strpos + strlen($remove)); 
} 

$str = "Hello, world. This is amazing"; 
print str_substract('rld', $str); 

/* Outputs: */ 
"Hello, wo. This is amazing" 
0

dinámicamente, si desea eliminar una parte (s) a partir de un índice fijo (es) de una cadena, utilice esta función:

/* 
* Remove index/indexes from a string, delimited by a space (or something else). 
* First, divides the string by delimiter and holds divided parts as an array. 
* If $index is an array, it removes all indexes of the divided string; 
* otherwise (i.e. has an int value), it removes just that index of the string. 
* At last, it joins all string parts together and return it as a string. 
* Note: If you want to use this function in PHP5, remove scalar type hints 
* (i.e. keywords before function arguments). 
*/ 
function remove_from_str($index, string $str, string $delimiter = " "): string 
{ 
    // String parts 
    $strParts = explode($delimiter, $str); 

    // Remove indexes from string parts 
    if (is_array($index)) 
     foreach ($index as $i) 
      $strParts[(int)$i] = null; 
    else 
     $strParts[(int)$index] = null; 

    // Remove null values, to prevent duplicating delimiter 
    $strParts = array_filter($strParts); 

    // Join all parts together and return it 
    return implode($delimiter, $strParts); 
} 

para su propósito:

remove_from_str(1, "REGISTER 11223344 here"); 
// Output: REGISTER here 

Uno de sus usos es ejecutar comandos, que usted conoce su estructura.

Cuestiones relacionadas