Dyegod3 0 Denunciar post Postado Fevereiro 13, 2010 pessoal tenho um função realce, ela serve para realçar uma palavra dentro de um texto, porém está ocorrendo um erro quando uso a função ereg_replace do php, quando passo o valor para $var1... da o seguinte warning Warning: ereg_replace() [function.ereg-replace]: Invalid character class name in C:\xampp\htdocs... agradeço toda ajuda possível pessoal ;) function realce($mostra,$pat,$cor_a,$cor_B) { $var1=$mostra; $var2=$pat; $var3=$cor_a; $var4=$cor_b; $pat1=strtolower($var2); $pat2=ucfirst($pat1); $pat3=strtoupper($var2); $pat_a="[[:<:]]".$var2 ."[[:>:]]"; $pat_b="[[:<:]]".$pat1."[[:>:]]"; $pat_c="[[:<:]]".$pat2."[[:>:]]"; $pat_d="[[:<:]]".$pat3."[[:>:]]"; $repl = "<font color='$var3'><b>".$var2."</b></font>"; $var1=(ereg_replace($pat_a,$repl,$var1)); $repl1 ="<font color='$var3'><b>".$pat1."</b></font>"; $var1=(ereg_replace($pat_b,$repl1,$var1)); $repl2 ="<font color='$var4'><b>".$pat2."</b></font>"; $var1=(ereg_replace($pat_c,$repl2,$var1)); $repl3 ="<font color='$var4'><b>".$pat3."</b></font>"; $var1=(ereg_replace($pat_d,$repl3,$var1)); return $var1; } Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Fevereiro 13, 2010 Warning: ereg_replace() [function.ereg-replace]: Invalid character class name in C:\xampp\htdocs... As funções ereg_* estão sendo descontinuadas, utilize preg_* no lugar. ereg_replace http://forum.imasters.com.br/public/style_emoticons/default/seta.gif preg_replace Veja também a função preg_quote, ela resolverá o seu problema: preg_quote() Compartilhar este post Link para o post Compartilhar em outros sites
Dyegod3 0 Denunciar post Postado Fevereiro 13, 2010 bom... agora está dando o seguinte warning Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in C:\xampp\htdocs não fui eu qm desenvolveu este cód... não sacar muito de expressões parece um problema tbm xD o quê significam essas expressões "[[:<:]]" ? $pat_a="[[:<:]]".$var2 ."[[:>:]]"; $pat_b="[[:<:]]".$pat1."[[:>:]]"; $pat_c="[[:<:]]".$pat2."[[:>:]]"; $pat_d="[[:<:]]".$pat3."[[:>:]]"; Compartilhar este post Link para o post Compartilhar em outros sites
Dyegod3 0 Denunciar post Postado Fevereiro 13, 2010 um dump da variável var1 var1 = ( preg_replace( [[:<:]]ômega[[:>:]] , ômega , Eu sou o Alfa e o Ômega, o princípio e o fim, diz o Senhor, que é, e que era, e que há de vir, o Todo-Poderoso. )) Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Fevereiro 13, 2010 A menos que esteja enganado quanto a síntese da resposta, mas as ER's usadas em/com preg_*() devem estar dentro de delimitadores que são caracteres que não serão usados na ER e nem pertençam à classificação de metacaratecter. Normalmente usa-se uma barra ( / ) e, caso ela apareça na ER (como para casar um URL), escapa-se com \ (barra invertida). Mas esse delimitador você pode escolher qual usar, mas o delimitador à esquerda deve ser o mesmo à direita. É comum usar-se em substituição à barra, o arroba ( @ ) ou o sustenido ( # ). O erro que você obteve é que '[' abre uma lista, pertencendo, assim, a categoria de metacaractere, sendo seu uso como delimitador negado. Daí a má interpretação do metacaractere como sendo um delimitador. Compartilhar este post Link para o post Compartilhar em outros sites
Dyegod3 0 Denunciar post Postado Fevereiro 13, 2010 é uma boa explicação, tentei aplicar aki no cód mas não consegui resultados, talvez não tenha entendido bem onde deve ser alterado o cód é pequeno, se puder alterá-lo para mostar como deve ficar agradeço ;) Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 18, 2010 tambem tive problemas <?php echo $dados['Dado'] = preg_replace("([0-9]{2,3})([0-9]{3})([0-9]{1})","\\1.\\2-\\3",$dados['Dado'])?> resposta: Warning: preg_replace(): Unknown modifier '(' in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\mostraBD.php on line 128 Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 18, 2010 Funções preg_* precisam de um delimitador. Pode usar barra: preg_replace( "/er aqui/", $var ); Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 18, 2010 ok obrigado mas... deve-se mesmo parar de usar as funções ereg_*? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 18, 2010 Sim. Está escrito no manual do PHP. Essas funções são obsoletas no PHP 5.3 e serão *removidas* no PHP 6 Veja a documentação de qualquer função ereg_* Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 18, 2010 Beraldo, voce sabe quais outras funções serão removidas? ou onde posso saber isso? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 19, 2010 http://php.net/manual/en/migration53.deprecated.php E a maioria (imagino que todas) das funções lisradas aí deixarão de existir no PHP 6 Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Fevereiro 19, 2010 obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 20, 2010 @Dyegod3 O problema do seu script é o mesmo: não há delimitadores na ER. Use a barra: preg_replace( "/ER aqui/", $var, $var2 ); Compartilhar este post Link para o post Compartilhar em outros sites