Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ozzyvegeta

função replace e expressoes regulares...

Recommended Posts

olá...

 

alguem sabe se existe alguma função no php q substitua uma determinada palavra dentro de uma frase, mas fazer com q ela só substitua uma só ocorrencia...

 

ex:

 

$str = "valor1 =  {valor},  valor2 =  {valor}";echo str_replace("{valor}", "1", $str);

esse codigo vai retorna:

 

"valor1 =  1,  valor2 =  1";

mais eu não quero q todas as ocorrencias sejam substituida, somente a primeira ocorrencia, ou seja, q retornasse dessa forma abaixo:

 

"valor1 =  1,  valor2 =  {valor}";

bom, caso não exista nenhuma função como faria isso usando expressoes regulares, isso se é q é possivel se fazer em expressoes regulares...tipo, eu não manjo nada disso, por isto pergunto....valew aee

 

fui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... cara para te falar a verdade eu fui meio burro... tava olhando nos padroes de modificacao do pcre e nao achei nada... mais tinha esquecido de olhar os parametros da propria funcao ^^olha sua resposta:sr php.net diz:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

<?$string = "abcabcabc";$return = preg_replace("/abc/", "xxx", $string, 1);echo $return;?>

espero ter ajudado[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá..

 

queria agradesce ae pela ajuda..funciono legal, só q tem um probleminha q não pode ocorrer de manera nenhuma...

 

quando eu utilizo alguns caracteres como: /, ' , " e etc...esta ocorrendo um erro..

 

eu acho q esse erro acontece pq esses caracteres são caracteres curingas para expressões regulares, por isso eu gostaria de saber como eu faço para corrigir isso, caso seja possivel...

 

bom, um exemplo de quando ocorre o erro:

 

$img = "<img src=\"arquivos/image.jpg\">";echo preg_replace("/$img /", "xxx", $string, 1);

e aproveitando o post, eu gostaria de expor mais uma duvida q tb é muito importante...

 

como eu faço para dividir uma string usando a função split ..

 

bom, eu to querendo dividir usando caracteres compostos ex:

$str = "nome := teste";print_r(split([:=], $str));

eu queria dividir onde diver ":=", mas eu não to conseguindo...se alguem puder me ajuda...

valew ae..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se assim da certo:$img = "<img src=\"arquivos\/image.jpg\">";echo preg_replace("/$img/", "xxx", $string, 1);quanta a segunda:$str = "nome := teste";print_r(split('[:=]', $str));

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew cara, pelas ajudas...mais me explica: só existe a "/" q da problema, ou existe mais algum caractere que precisa se trabalhado...

 

o segundo problema eu expliquei...veja ae...

 

assim da certo mesmo...

 

 

$str = "nome := teste";print_r(split('[:=]', $str));

mas como esta abaixo não funciona...eu quero dividir onde tem ":=" e ","...

 

$str = "nome := ale, Idade :=18 ";print_r(split('[(:=),]', $str));

valew aee..

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente so as barras e aspas...quanto ao split:$str = "nome := ale, Idade :=18 ";print_r(split('[(:=),]', $str));mude-a para:$str = "nome := ale, Idade :=18 ";print_r(split('[:=,]', $str));OBS: nao testei, mas deve funcionar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
valew cara, pelas ajudas...mais me explica: só existe a "/" q da problema, ou existe mais algum caractere que precisa se trabalhado...

Qualquer metacaractere precisaria ser escapado quando utilizado dentro de uma ER (como "*", "]", "[", "(", ")", "+", ".", etc.). Basta colocar uma "\" na frente deles. A "/" precisa ser escapada tb pq ela é usada como delimitador da expressão regular. Se você colocar ela sem a barra de escape, o interpretador de PHP entende que você quer terminar a ER naquele ponto.

 

$str = "nome := teste";
print_r(split('[:=]', $str));

 

mas como esta abaixo não funciona...eu quero dividir onde tem ":=" e ","...

 

$str = "nome := ale, Idade :=18 ";
print_r(split('[(:=),]', $str));

 

Tenta fazer assim: split(':=|,', $str);

 

O caractere "|" representa "ou". O problema que estava dando é que você não consegue criar um grupo (delimitado por parênteses) dentro de uma lista (delimitada por colchetes), pois os caracteres dentro da lista não precisam ser escapados. Ou seja, aqueles parênteses ali são interpretados como parênteses literais (como se estivessem com uma barra de escape na frente).

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.