Sua pergunta não é clara / ambígua. Você está usando o termo remove, mas parece provável que você queira dizer extractpara que a sequência de destino possa ser armazenada no banco de dados.
mickmackusa
@ Makyen Sinto-me bastante confiante de que você vandalizou a pergunta para corrigir muitas das respostas. Pense nisso: por que o OP gostaria de salvar REGISTER hereno banco de dados?
mickmackusa 27/02
2
@mickmackusa remove pode ser sinônimo de take away, ou seja, tirar 11223344 da string, não vejo o problema aqui. Na pior das hipóteses, é ambíguo, certamente não é "vandalizado"
Nick
Leia as versões pré-vandalizadas. @Nick stackoverflow.com/posts/2192170/revisions A verdade vai mudar de idéia. Ficaria feliz em ver esta pergunta encerrada como incerta.
mickmackusa 27/02
2
@mickmackusa eu fiz ... eu não consigo entender o seu ponto. Se você tem um problema tão grande com a forma como está escrito, por que não consertar você mesmo?
Nick
Respostas:
220
Se você estiver segmentando especificamente "11223344", use str_replace:
Encontre Obrigatório. Especifica o valor a ser encontrado
substituir Necessário. Especifica o valor para substituir o valor na localização
sequência Obrigatório. Especifica a sequência a ser pesquisada
count Opcional. Uma variável que conta o número de substituições
Conforme exemplo 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"
A substituição do @ElijahLynn exige que você remova coisas, alterações futuras ou ruídos poderão ocorrer. Fazer isso via _replace, mas _match continuaria funcionando.
TravisO
@ TravisO bem, sim, mas não. Essas duas são quase as mesmas funções em termos de implementação e as chances de mudanças futuras afetarem qualquer uma delas são as mesmas . Existe a mesma possibilidade de futuras alterações apenas no _match, tornando esse uso inválido e _replace ainda funcionando bem. Além disso, o controle de versão geralmente é muito atento a não travar a funcionalidade anterior, se possível.
CT.
Você não precisa de um grupo de captura aqui. De fato, o uso do grupo de captura incha desnecessariamente a $matchmatriz. Retire os parênteses e depois acesse $match[0].
mickmackusa 28/02
5
substr () é uma função php embutida que retorna parte de uma string. A função substr () terá uma string como entrada, o formulário de índice onde você deseja que a string seja aparada. e um parâmetro opcional é o comprimento da substring. Você pode ver a documentação adequada e o código de exemplo em http://php.net/manual/en/function.substr.php
Como você propõe que o OP use sua dica geral para alcançar o resultado desejado?
mickmackusa 28/02
Acho essa resposta vaga e de baixo valor.
mickmackusa 28/02
1
Dinamicamente, se você deseja remover (a) parte (s) de (a) índice (s) fixo (s) de uma string, use esta função:
/**
* 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 seu propósito:
remove_from_str("REGISTER 11223344 here",1);// Output: REGISTER here
Um de seus usos é executar seqüências de caracteres do tipo comando, que você conhece suas estruturas.
Não há absolutamente nenhuma razão para passar matrizes preg_replace()nesse caso. Também não há nenhum benefício em usar um grupo de captura.
mickmackusa
Concordo. A matriz é adicionada apenas por conveniência. Pode ser negligenciado. não fará mal nenhum. Adicionado grupo de captura para excluir números. Isso está funcionando conforme a pergunta traçada. E outras modificações e ajustes podem ser feitos com base em indivíduos.
arango_86 9/01
O que quero dizer é que há inclusões desnecessárias no seu snippet que não fazem sentido incluir.
Não retornaria "REGISTER__aqui", com dois espaços em branco (pense em sublinhado como espaços, o comentário não me permitirá dois espaços subseqüentes)? Por causa dos espaços antes e depois do "(. *)".
TechNyquist
6
Esta resposta é pelo menos 100% errada. Prova: 3v4l.org/LDLEM por que esta resposta possui 15 UVs?
remove
, mas parece provável que você queira dizerextract
para que a sequência de destino possa ser armazenada no banco de dados.REGISTER here
no banco de dados?Respostas:
Se você estiver segmentando especificamente "11223344", use
str_replace
:fonte
Você pode usar str_replace () , que é definido como:
Então você pode escrever o código como:
Se você precisar de uma melhor correspondência por meio de expressões regulares, use preg_replace () .
fonte
assumindo que 11223344 não seja constante
fonte
Conforme exemplo de OP:
fonte
Quando você precisa de correspondência baseada em regras, precisa usar regex
Isso corresponderá ao primeiro conjunto de números; portanto, se você precisar ser mais específico, tente:
fonte
$match
matriz. Retire os parênteses e depois acesse$match[0]
.substr () é uma função php embutida que retorna parte de uma string. A função substr () terá uma string como entrada, o formulário de índice onde você deseja que a string seja aparada. e um parâmetro opcional é o comprimento da substring. Você pode ver a documentação adequada e o código de exemplo em http://php.net/manual/en/function.substr.php
NOTA: o índice de uma sequência começa com 0.
fonte
Dinamicamente, se você deseja remover (a) parte (s) de (a) índice (s) fixo (s) de uma string, use esta função:
Para seu propósito:
Um de seus usos é executar seqüências de caracteres do tipo comando, que você conhece suas estruturas.
fonte
O trecho a seguir imprimirá "REGISTRAR AQUI"
A API preg_replace () nos usa como indicado abaixo.
fonte
preg_replace()
nesse caso. Também não há nenhum benefício em usar um grupo de captura.Faça o seguinte
Isso retornaria "REGISTERhere"
ou
Isso retornaria "REGISTRAR AQUI"
fonte