Casar Primeira Maiúscula Ou Não
Started By Nicholas Pufal, 02/05/2008, 16:03
6 replies to this topic
#1
Posted 02/05/2008, 16:03
Tô com uma dúvida simples, só preciso de um remember porque nessas últimas semanas não mexi muito com php e pesquisando não soube achar uma palavra-chave pra tanto.
Fiz um busca com LIKE %$palavra% e para ser mais fácil a captura de resultados, passei pra lowercase tanto a tabela do mySQL quanto a palavra digitada na hora da busca.
Ou seja, ele faz a busca com tudo em lowercase, mas o meu retorno (impressão) do resultado vem com as letras conforme estão cadastradas...
Exemplo:
Digitei "Carro" na busca. Ele busca por "carro", passa pra lower a tabela no momento da busca e na hora de imprimir o resultado na tela me mostra conforme está cadastrado no database, "Carro".
Com isso, ao tentar destacar no texto a palavra procurada, não estou conseguindo. Pois ao tentar usar str_replace, ele vai procurar ou pela palavra com tudo em lowercase ou com tudo maiúsculo ou com.... enfim, são inúmeras possibilidades, e com str_replace não seria viável.
Pergunta: Pensei em usar ereg_replace, mas como que defino na ER para que a primeira letra possa ser maiúscula OU minúscula, e ambos os casos case?
Acho que não tem necessidade de fazer a mesma verificação para todas as letras da consulta do cabra (iria exigir muito do processamento e sem necessidade), mas se alguém puder me explicar como fazer com todas as letras, seria bem interessante também!
É isso
Fiz um busca com LIKE %$palavra% e para ser mais fácil a captura de resultados, passei pra lowercase tanto a tabela do mySQL quanto a palavra digitada na hora da busca.
Ou seja, ele faz a busca com tudo em lowercase, mas o meu retorno (impressão) do resultado vem com as letras conforme estão cadastradas...
Exemplo:
Digitei "Carro" na busca. Ele busca por "carro", passa pra lower a tabela no momento da busca e na hora de imprimir o resultado na tela me mostra conforme está cadastrado no database, "Carro".
Com isso, ao tentar destacar no texto a palavra procurada, não estou conseguindo. Pois ao tentar usar str_replace, ele vai procurar ou pela palavra com tudo em lowercase ou com tudo maiúsculo ou com.... enfim, são inúmeras possibilidades, e com str_replace não seria viável.
Pergunta: Pensei em usar ereg_replace, mas como que defino na ER para que a primeira letra possa ser maiúscula OU minúscula, e ambos os casos case?
Acho que não tem necessidade de fazer a mesma verificação para todas as letras da consulta do cabra (iria exigir muito do processamento e sem necessidade), mas se alguém puder me explicar como fazer com todas as letras, seria bem interessante também!
É isso
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
#2
Posted 02/05/2008, 16:08
#3
Posted 02/05/2008, 16:45
Valeu a ajuda!
Já melhorou, já consigo marcar as palavras buscadas
Mas vou insistir no método do ereg_replace ainda, porque com str_ireplace ele vai substituir para o case do momento em que eu digitei a busca.
Por exemplo: Se eu procurei por "joão" e no BD existe "João", ele não vai imprimir "João", mas sim "joão" (visto que digitei com lowercase a palavra).
Preciso que ele mantenha a formatação que está no banco de dados. O que quero é apenas adicionar um <span> na palavra, por isso que não posso usar str_ireplace, pois sendo assim ele vai mudar a formatação que está no DB de tempos em tempos.
Continua a dúvida inicial
Já melhorou, já consigo marcar as palavras buscadas
Mas vou insistir no método do ereg_replace ainda, porque com str_ireplace ele vai substituir para o case do momento em que eu digitei a busca.
Por exemplo: Se eu procurei por "joão" e no BD existe "João", ele não vai imprimir "João", mas sim "joão" (visto que digitei com lowercase a palavra).
Preciso que ele mantenha a formatação que está no banco de dados. O que quero é apenas adicionar um <span> na palavra, por isso que não posso usar str_ireplace, pois sendo assim ele vai mudar a formatação que está no DB de tempos em tempos.
Continua a dúvida inicial
Edição feita por: Firehalk, 02/05/2008, 16:45.
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
#4
Posted 03/05/2008, 01:52
Usa eregi_replace(). É só pegar, com um retrovisor, o que casar e adicionar a tag.Mas vou insistir no método do ereg_replace ainda, porque com str_ireplace ele vai substituir para o case do momento em que eu digitei a busca.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador
#6
Posted 05/05/2008, 08:37
Alex, é bem isso a função que procurava, valeu
Eu tô fazendo alguma burrada, mas faz um tempinho que não mexo e mesmo nesse básico do básico não tô achando o erro...
Tentei assim:
Não era pra ter funcionado? Tentei o retrovisor com duas barras (\\) e nada também.
Edit: Ahhhhhhhhh vou pirar aqui. Com preg_replace funciona, usando exatamente a mesma ER
Mas com preg_replace é case sensitive, e até onde sei não tem função pra case insensitive.
Vejam:
Alguma luz? Eu tô sem idéias
PHP versão 5.2.5
Edit2 (resolvido): Tinha me esquecido do /i (case insensitive).
O jeito foi usar o preg_replace mesmo, com o /i.
Eu tô fazendo alguma burrada, mas faz um tempinho que não mexo e mesmo nesse básico do básico não tô achando o erro...
Tentei assim:
$teste = "Estou fazendo um teste"; echo eregi_replace('/(\bteste\b)/','<span>\1</span>',$teste);
Não era pra ter funcionado? Tentei o retrovisor com duas barras (\\) e nada também.
Edit: Ahhhhhhhhh vou pirar aqui. Com preg_replace funciona, usando exatamente a mesma ER
Mas com preg_replace é case sensitive, e até onde sei não tem função pra case insensitive.
Vejam:
//Teste com eregi_replace $var = "Estou fazendo um teste simples e não funciona *****!!"; $var = eregi_replace('/(\bsimples\b)/','<span>\\1</span>',$var); echo $var; echo "<br/><br/>-------------<br/><br/>"; //Teste com preg_replace $var = "Estou fazendo um teste simples e não funciona *****!!"; $var = preg_replace('/(\bsimples\b)/','<span>\\1</span>',$var); echo $var;
Alguma luz? Eu tô sem idéias
PHP versão 5.2.5
Edit2 (resolvido): Tinha me esquecido do /i (case insensitive).
O jeito foi usar o preg_replace mesmo, com o /i.
preg_replace('/(\b$palavra\b)/i','<span>\\1</span>',$var);
Edição feita por: Firehalk, 05/05/2008, 14:38.
BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.
#7
Posted 29/10/2017, 09:26
Viagra Confezioni Levaquin Scrotum Female Sample Tadalis Sx Soft levitra a precios baratos Fluoxetine Medicine Citotec Comprar
Levitra Preise Schweiz Wholesale Viagra 100mg Cialis Depression cost of levitra 20mg Levitra Sample Online Pharmacy Tarif Du Levitra En Baisse Cielas
Viagra Pfizer Bewertung Clomid Prescription Overnight Pharmacocinetique De La Ciprofloxacine cialis Kamagra Vente
Levitra Preise Schweiz Wholesale Viagra 100mg Cialis Depression cost of levitra 20mg Levitra Sample Online Pharmacy Tarif Du Levitra En Baisse Cielas
Viagra Pfizer Bewertung Clomid Prescription Overnight Pharmacocinetique De La Ciprofloxacine cialis Kamagra Vente
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)