usando expressões regulares em PHP PHP Expressões Regulares - Parte VII Introdução Vimos alguns usos de regex em PHP. Sabemos como verificar se um regex é encontrado em uma seqüência de assunto. Nós sabemos como encontrar a posição de regex correspondência na seqüência de assunto. Note-se que a seqüência de assunto pode ser uma página inteira de texto. Nesta parte da série, vamos aprender duas características importantes intitulado "Pesquisar e substituir" e "A operação de divisão". Antes de deixar esta parte vamos falar sobre o delimitador regex.
Vamos começar com uma seção muito pequenas chamadas de variáveis em Regex. Variável em Regex Antes de olharmos para as duas características, vamos estar ciente de que o padrão de regex pode ter variáveis. O código a seguir funciona: $ var = "am"; $ var = "am"; if (preg_match ("/I $ var /", "Eu sou o único.")) echo "Matched". "Else echo" Não Matched> Aqui, nós temos a variável, $ var = "am".
"?"; A regex é /I $ var /que está /Eu estou /"AM" no padrão é substituído por $ var; e correspondência ocorre Pesquisar e substituir Você pode procurar por uma correspondência na seqüência de assunto e ter os sub strings casadas substituído. Considere a seguinte seqüência de assunto: "Eu sou um homem Você é um homem.". O sub string "homem" ocorre neste assunto em dois lugares. Você pode ter todas as ocorrências do sub string "homem" substituiu a mulher. O código a seguir faz isso: $ finalStr = preg_replace ("/homem /", "mulher", ". Eu sou um homem Você é um homem.
"); echo $ finalStr; ?> Você tem a função, preg_replace (). O primeiro argumento desta função é o regex. O segundo argumento é a seqüência de sub para substituir a seqüência de sub correspondido pela expressão regular. O terceiro argumento é o assunto. Esta função retorna a seqüência de assunto em que todos os sub strings casadas foram substituídos. Se nenhuma correspondência ocorreu, a string original é devolvida. Se ocorreu um erro, NULL é retornado. A segunda declaração do código acima ecoa a string retornada. Isto é o que é ecoado: Eu sou uma mulher. Você é uma mulher.
Assim, você pode usar a função preg_replace () para procurar o sub cordas por um regex e têm todas as sub cordas foram encontrados e substituídos por alguns sub substituição string. O sub substituição de string é o segundo argumento da função. Se houver muitos jogos, é possível para você substituir alguns deles, começando a partir da primeira. Para isso, você precisa de um quarto argumento opcional. Considere o seguinte assunto: "Eu sou um homem Você é um homem Essa pessoa é um homem..." Há três ocorrências da palavra "homem". Vamos ter apenas os dois primeiros substituído.
Este código a seguir faz isso: $ finalStr = preg_replace ("/homem /", "mulher", ". Eu sou um homem Você é um homem Essa pessoa é um homem."., 2); echo $ finalStr; ?> Um quarto argumento foi adicionado. Queremos as duas primeiras ocorrências da string sub, "homem" de ser substituído, por isso, colocar 2 como o quarto argumento. O quarto argumento é o número de ocorrências do jogo, você deseja substituir. A segunda instrução no código acima ecoa a string resultante como, eu sou uma mulher. Você é uma mulher. Essa pessoa é um homem. Este quarto argumento é opcional.
Se você colocar -1 lá isso significa que você quer todas as ocorrências do sub seqüência correspondente de ser substituído; este comportamento é o padrão na ausência do -1. O exemplo seguinte ilustra a utilização do -1. $ finalStr = preg_replace ("/homem /", "mulher", "Eu sou um homem Você é um homem Essa pessoa é um homem...", -1); echo $ finalStr; ?> A saída do código é: eu sou uma mulher. Você é uma mulher. Essa pessoa é uma mulher. Até agora, temos visto a função preg_match (), a função preg_match_all () e agora a função preg_replace ().
Contando o número de substituição Feito Há um quinto argumento opcional para a função preg_replace (). Esta é uma variável. Você escolhe que nome você quer para a variável. O código a seguir ilustra isso: $ finalStr = preg_replace ("/homem /", "mulher", "Eu sou um homem Você é um homem Essa pessoa é um homem...", 2, $ count); echo $ finalStr. "echo $ count". ?> Olhe para os argumentos da função muito bem. O primeiro argumento é o regex. O segundo é a string de substituição. O terceiro é o assunto; ele tem três ocorrências da palavra "homem".
O quarto dá o número de substituição que queremos; é 2. A quinta é a variável que irá armazenar o número de substituições efectuadas. A saída do código é, eu sou uma mulher. Você é uma mulher. Essa pessoa é um homem. 2 O quarto argumento queria duas substituições e duas substituições foram feitas. A última instrução no código exibe o número de substituição realmente fez; exibe o valor da variável, o qual é o quinto argumento. Não é necessário para você ter declarado essa variável em outro lugar, antes.
É possível que você não sabe o número de partidas no assunto, e você gostaria de substituir todas as correspondências possíveis e saber o número de substituição. Neste caso, o quarto argumento será -1 e você precisa o quinto argumento. O código a seguir ilustra isso: $ finalStr = preg_replace ("/homem /", "mulher", "Eu sou um homem Você é um homem Essa pessoa é um homem...", -1, $ Count); echo $ finalStr. "echo $ count". ?> Aqui todos os jogos seriam substituídas e $ contagem iria realizar o número de substituição, após a execução da função. A saída do código acima é, eu sou uma mulher.
Você é uma mulher. Essa pessoa é uma mulher. Três 3 é o número de substituição feita. A operação de divisão Existe uma função para este. A sintaxe para a função é: preg_split array (string $ regex, string $ assunto) A função preg_split split () divide uma string em uma matriz de sub strings e retorna a matriz. Ele usa uma expressão regular como um separador. Seja o padrão regex não é qualquer elemento da matriz retornada.
Considere a seguinte seqüência de assunto: $ subject = "um dois três"; Se sabemos que o padrão regex para identificar espaço entre as palavras, então podemos dividir essa string em uma matriz composta de as palavras, "um", "dois" e "três". \\ É a classe de personagem para o espaço. \\ + Irá corresponder a um espaço, uma ou mais vezes. A regex para separar as palavras acima é \\\\ + \\ Assumimos que um espaço pode ser criado por bater a barra de espaço mais de uma vez. O código seguinte ilustra a utilização da função de divisão com o padrão acima.
$ subject = "um dois três"; $ arr = preg_split ("/\\ + /", $ assunto); echo $ arr [0]. "echo $ arr [1]." .? echo $ arr [2] "> Na seqüência de assunto as palavras são separadas por espaços A saída do código acima é:. one two three A derramado função dividiu as palavras na seqüência de assunto usando o espaço entre as palavras, e colocar cada palavra como um elemento da matriz retornada É possível ter palavras em uma string separada por uma vírgula e um espaço, como US $ subject = "um, dois, três"; A regex para separar essas palavras é:.
/, \\ + /O código a seguir ilustra isso: $ subject = "um, dois, três"; $ arr = preg_split ("/, \\ + /", $ assunto); echo $ arr "[0]. echo $ arr [1]. "echo $ arr [2]." ?> A saída do código acima é: um dois três Um sintaxe simplificada do preg_replace () é: $ StrWithRepl = preg_replace (string regex, string $ substituição, string $ assunto); A partir da explicação que dei antes, a sintaxe aqui é auto-explicativa. Os delimitadores que você deve sempre usar as //delimitadores para a regex? No. PHP dá-lhe a possibilidade de usar delimitadores de sua escolha.
As expressões a seguir, cada um produz uma partida: preg_match ("! Mundo", "Olá Mundo") preg_match ("{mundo}", "Olá Mundo") preg_match ("'Mundo'", "Olá Mundo") A //delimitadores padrão para uma partida pode ser alterado para delimitadores arbitrários. No primeiro exemplo, os delimitadores são !!. Na segunda expressão os delimitadores são {}. No terceiro exemplo, os delimitadores são ''. O código a seguir ilustra o terceiro caso: if (preg_match ("'Mundo'", "Olá Mundo")) echo "Matched". "Else echo" Não Matched ".
"?>