Su pregunta es poco clara / ambigua. Está utilizando el término remove, pero parece probable que quiera decir extractque la cadena de destino se puede almacenar en la base de datos.
mickmackusa
@Makyen Estoy bastante seguro de que ha destrozado la pregunta para hacer que muchas de las respuestas sean correctas. Piénselo: ¿por qué querría el OP guardar REGISTER hereen la base de datos?
mickmackusa
2
@mickmackusa remove puede ser sinónimo de quitar, es decir, sacar 11223344 de la cadena, no veo el problema aquí. En el peor de los casos, es ambiguo, ciertamente no está "destrozado"
Nick
Lea las versiones pre-vandalizadas. @Nick stackoverflow.com/posts/2192170/revisions La verdad te hará cambiar de opinión. Me encantaría ver esta pregunta cerrada como poco clara.
mickmackusa
2
@mickmackusa lo hice ... No entiendo tu punto. Si tiene un problema tan grande con la forma en que está escrito, ¿por qué no lo arregla usted mismo
Nick
Respuestas:
220
Si está apuntando específicamente a "11223344", use str_replace:
No estoy seguro de por qué se publicó esta respuesta, es un duplicado más largo de la respuesta de Dominic y un duplicado más corto de la respuesta de Roland ...
reemplazar requerido. Especifica el valor para reemplazar el valor en find
Cadena requerida. Especifica la cadena a buscar
cuenta opcional. Una variable que cuenta el número de reemplazos.
Según el ejemplo de OP:
$Example_string ="REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344','', $Example_string);// will leave you with "REGISTER here"// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ',' ', $Example_string_PART_REMOVED));// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces// will leave you with "REGISTER here"
Reemplazar @ElijahLynn requiere que elimines cosas, cambios futuros o el ruido se rompería. Hacer esto a través de _replace pero _match continuaría funcionando.
TravisO
@TravisO bueno sí, pero no. Esos dos son casi las mismas funciones de implementación inteligente, y las posibilidades de que los cambios futuros afecten a cualquiera de ellas son las mismas . Existe la misma posibilidad de cambios futuros solo en _match, lo que hace que este uso sea inválido y _replace todavía funciona bien. Además, el control de versiones generalmente es muy atento a no frenar la funcionalidad anterior, si es posible.
CT.
No necesitas un grupo de captura aquí. De hecho, el uso del grupo de captura hincha innecesariamente la $matchmatriz. Quite los paréntesis y luego acceda a través de $match[0].
mickmackusa
5
substr () es una función php incorporada que devuelve parte de una cadena. La función substr () tomará una cadena como entrada, la forma de índice donde desea que se recorte la cadena. y un parámetro opcional es la longitud de la subcadena. Puede ver la documentación adecuada y el código de ejemplo en http://php.net/manual/en/function.substr.php
¿Cómo propones que el OP debe usar tu pista general para lograr el resultado deseado?
mickmackusa
Considero que esta respuesta es vaga y de poco valor.
mickmackusa
1
Dinámicamente, si desea eliminar (a) parte (s) de (a) índice (s) fijo (s) de una cadena, use esta función:
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/function removeFromString(string $string, $index,string $delimiter =" "):string{
$stringParts = explode($delimiter, $string);// Remove indexes from string partsif(is_array($index)){foreach($index as $i){
unset($stringParts[(int)($i)]);}}else{
unset($stringParts[(int)($index)]);}// Join all parts together and return itreturn implode($delimiter, $stringParts);}
Para su propósito:
remove_from_str("REGISTER 11223344 here",1);// Output: REGISTER here
Uno de sus usos es ejecutar cadenas similares a comandos, que conoce sus estructuras.
No hay absolutamente ninguna razón para pasar matrices preg_replace()en este caso. Tampoco hay ningún beneficio al usar un grupo de captura.
mickmackusa
Estoy de acuerdo. La matriz se agrega solo por conveniencia. Se puede descuidar. No hará daño. Grupo de captura agregado para excluir números. Esto funciona según la pregunta trazada. Y se pueden realizar más modificaciones y ajustes en función de los individuos.
arango_86
Mi punto es que hay inclusiones innecesarias en tu fragmento que no tiene sentido incluir.
¿No devolvería "REGISTER__here", con dos espacios en blanco (piense en subrayado como espacios, el comentario no me permitirá dos espacios posteriores)? Debido a los espacios antes y después del "(. *)".
TechNyquist
66
Esta respuesta es AL MENOS 100% incorrecta. Prueba: 3v4l.org/LDLEM ¿ por qué esta respuesta tiene 15 UV?
remove
, pero parece probable que quiera decirextract
que la cadena de destino se puede almacenar en la base de datos.REGISTER here
en la base de datos?Respuestas:
Si está apuntando específicamente a "11223344", use
str_replace
:fuente
Puede usar str_replace () , que se define como:
Entonces podrías escribir el código como:
Si necesita una mejor coincidencia a través de expresiones regulares, puede usar preg_replace () .
fuente
suponiendo que 11223344 no es constante
fuente
Según el ejemplo de OP:
fuente
Cuando necesite una coincidencia basada en reglas, debe usar expresiones regulares
Eso coincidirá con el primer conjunto de números, así que si necesita ser más específico, intente:
fuente
$match
matriz. Quite los paréntesis y luego acceda a través de$match[0]
.substr () es una función php incorporada que devuelve parte de una cadena. La función substr () tomará una cadena como entrada, la forma de índice donde desea que se recorte la cadena. y un parámetro opcional es la longitud de la subcadena. Puede ver la documentación adecuada y el código de ejemplo en http://php.net/manual/en/function.substr.php
NOTA: el índice de una cadena comienza con 0.
fuente
Dinámicamente, si desea eliminar (a) parte (s) de (a) índice (s) fijo (s) de una cadena, use esta función:
Para su propósito:
Uno de sus usos es ejecutar cadenas similares a comandos, que conoce sus estructuras.
fuente
El siguiente fragmento imprimirá "REGÍSTRATE aquí"
La API preg_replace () nos usa como se indica a continuación.
fuente
preg_replace()
en este caso. Tampoco hay ningún beneficio al usar un grupo de captura.Haz lo siguiente
Esto devolvería "REGÍSTRATE aquí"
o
Esto devolvería "REGÍSTRATE aquí"
fuente