Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu estou criando uma bbcode para a linguagem Ruby, mas estou tendo dificuldades em "colorir" as keywords.
Eu fiz assim pros números e deu certo:
$str = preg_replace("#([0-9]{2,})#i", "<span style='color:darkred'>\\1</span>", $str); Esse {2,} é uma condição que serve somente para substituir se o número estivre "isolado". Ou seja, se tem 4s o 4 não fica vermelho, se tem s4, o 4 não fica vermelho, mas se tem somente o 4 ele fica vermelho. Isso funciona perfeitamente.
Mas já para as keywords eu estou co dificuldades...
$str = preg_replace("#(class|def){2,}#i", "<span style='color:blue'>\\1</span>", $str); Sendo que eu quero o mesmo caso do numero, se escrever adef o def nao fica azul, se escrever defa tbm nao, e so o def que fica.
Alguém pode me ajudar? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Firewords você ta enganado a opção {} é para limitar o numero de caracters dai no seu caso você ta pedindo para colorir numeros de 2 digitos em diante se tiver um numero só ele nao vai colorir
Nossa estava completamente errado. Verdde Fabyo, fiz novos testes e vi que o script ta a 0%.
Eclesiastes, não é so pro começo não =/ Tera no script todo.
E pra comentario eu fiz isso: **preg_replace("/( #)(.*?)(\n)/", "<span style='color:green'>\\1\\2\\3<span>", $txt);** Não vi nenhum erro, sendo que antes eu mando fazer um $str = $str."\n".
Agora também preciso de ajuda com os números. ='(
Rapaz, isso é complexo demais, há inúmeras formas de aparição de diversas sintaxes em diversas ocasiões.Precisa ter um grande conhecimento da linguagem, para saber as possíveis estruturas, sintaxes.Não é tão simples como você imagina.
Como o Eclesiastes falou, ER é um pouco complicado e precisa entender para fazer uma função eficiente, se precisar de uma ajuda só falar que eu ajudo no que eu sei
olha esses exemplos:
$str = preg_replace("#(class|def)#i", "\\0", $str);
$str = preg_replace("#([0-9]{1,})#", "\\1", $str);
ta simples mas é o começo
Consequi mais uma coisa$str = preg_replace("#(class|def)(\s)#i", "<span style='color:blue'>\\1\\2</span>", $str);Ai se não tiver um espaço vazio não muda a cor, e por precausão eu faço $str = $str.'\s' antes do preg_replace. Agora falta o comando para verificar se não existe nada antes. Mas lembrando do começo do script que começa com uma class, então atra dele não terá nada, nem um \s. Então tem como verificar se é uma letra ou um número?---editacabei de fazer isso e ta dando certo: $str = preg_replace("#(class|def){1}+(\s)#i", "<span style='color:blue'>\\1\\2</span>", $str);Tem algum erro que não to vendo? novamente to me enganando quanto ao {}?
Essas palavras só aparecerão no começo das linhas né?Use: #^\s(class|def)#miMas há também como colocar comentário antes das palavra acima né?Então tem que adicionar essa verificação.#^\s[\/{2}|\#|\/\.\\/](class|def)#miAlgo do tipo. ;)