<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3309219564532965443</id><updated>2012-02-16T12:56:52.172-08:00</updated><category term='regexp'/><category term='mysql'/><category term='php'/><title type='text'>Prodweb - Comunicação digital e Soluções de software para web</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://prodwebdigital.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://prodwebdigital.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Daniel Monteiro</name><uri>http://www.blogger.com/profile/06737282546868390721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Oad3_o-6pzs/Te-iy9ufwUI/AAAAAAAAANA/JgK07PhgMxc/s220/foto_im5.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3309219564532965443.post-8803720455496130202</id><published>2011-06-08T09:09:00.000-07:00</published><updated>2011-06-08T09:14:05.372-07:00</updated><title type='text'>IPv6 - Dia Mundial</title><content type='html'>O Dia Mundial do IPv6 começa hoje. Websites, deem a partida&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;(Fonte: blog do Google)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Em janeiro, nós e um punhado de empresas líderes na internet nos juntamos à Internet Society para anunciar (link em inglês) o Dia Mundial do IPv6. O anúncio foi um grito de guerra pela adoção do novo protocolo da internet. Agora, em menos de seis meses, os participantes já são mais de 400 organizações (link em inglês). Acreditamos que esse seja um marco importante, pois o IPv6 é a única solução em longo prazo para a exaustão dos endereços do IPv4, e a sua implementação é crucial para o crescimento contínuo da internet aberta...&lt;br /&gt;&lt;br /&gt;Leia mais em &lt;a href="http://bit.ly/kJp1H1"&gt;http://bit.ly/kJp1H1&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3309219564532965443-8803720455496130202?l=prodwebdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prodwebdigital.blogspot.com/feeds/8803720455496130202/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://prodwebdigital.blogspot.com/2011/06/ipv6-dia-mundial.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/8803720455496130202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/8803720455496130202'/><link rel='alternate' type='text/html' href='http://prodwebdigital.blogspot.com/2011/06/ipv6-dia-mundial.html' title='IPv6 - Dia Mundial'/><author><name>Daniel Monteiro</name><uri>http://www.blogger.com/profile/06737282546868390721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Oad3_o-6pzs/Te-iy9ufwUI/AAAAAAAAANA/JgK07PhgMxc/s220/foto_im5.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3309219564532965443.post-1917418630388797505</id><published>2011-03-14T14:27:00.000-07:00</published><updated>2011-03-14T14:30:11.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regexp'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Buscar palavras acentuadas no MySQL com expressões regulares</title><content type='html'>Um problema comum em sistemas de busca de strings é a busca por palavras que contenham acentos. Nunca sabemos se o nosso usuário vai buscar "níquel" ou "niquel", ainda "josé" ou "jose". Além disso, em nossos bancos de dados podemos ter salvo a string como "níquel" pois o texto veio de um editor HTML tipo fckeditor. É um cenário com muitas variantes, mas de qualquer forma, nossos sistemas têm que encontrar uma busca por "níquel" ou "niquel" com os mesmos resultados.&lt;br /&gt;&lt;br /&gt;Um bom caminho para essa solução é o uso de Expressões Regulares. Elas nos ajudam a dizer aos sistemas como uma string pode ser formada e podemos então trabalhar todas as variantes do caso acima.&lt;br /&gt;&lt;br /&gt;Para lembrar:&lt;br /&gt;&lt;br /&gt;"$" indica começo de linha&lt;br /&gt;"^" indica final de linha&lt;br /&gt;"." indica qualquer caracter&lt;br /&gt;"|" indica operador OU&lt;br /&gt;"*" indica qualquer coisa&lt;br /&gt;&lt;br /&gt;Logo:&lt;br /&gt;"n(i|í)quel" indica que tanto faz niquel ou níquel&lt;br /&gt;"$n" indica qualquer palavra iniciada com n&lt;br /&gt;&lt;br /&gt;No MySQL temos o operador REGEXP. Dessa forma se montarmos um SQL&lt;br /&gt;SELECT * FROM TB_ITEM WHERE TITULO REGEXP 'n(i|í|í)quel' teremos como retorno registros que tenham no campo TITULO níquel, niquel ou níquel. Isso então resolve o problema da busca em questão.&lt;br /&gt;&lt;br /&gt;Agora, o outro ponto a definir é como saber onde os acentos estão e em que momento devemos substituí-los. Naturalmente, é impossível saber exatamente a posição dos caracteres acentuados, logo devemos escrever uma função que faça uma substituição abrangente.&lt;br /&gt;&lt;br /&gt;As funções abaixo geram os termos corretos para serem aplicados no SQL.&lt;br /&gt;SELECT * FROM TB_ITEM WHERE TITULO REGEXP '" . fString2BuscaSql($busca) . "'&lt;br /&gt;&lt;br /&gt;function fHtmlEntitiesSemAcento($str)&lt;br /&gt;{&lt;br /&gt;   $arrConv = array(&lt;br /&gt;       "ç" =&gt; "c",&lt;br /&gt;       "Ç" =&gt; "C",&lt;br /&gt;       "ã" =&gt; "a",&lt;br /&gt;       "Ã" =&gt; "A",&lt;br /&gt;       "á" =&gt; "a",&lt;br /&gt;       "Á" =&gt; "A",&lt;br /&gt;       "à" =&gt; "a",&lt;br /&gt;       "À" =&gt; "A",&lt;br /&gt;       "â" =&gt; "a",&lt;br /&gt;       "Â" =&gt; "A",&lt;br /&gt;       "é" =&gt; "e",&lt;br /&gt;       "É" =&gt; "E",&lt;br /&gt;       "ê" =&gt; "e",&lt;br /&gt;       "Ê" =&gt; "E",&lt;br /&gt;       "è" =&gt; "e",&lt;br /&gt;       "È" =&gt; "E",&lt;br /&gt;       "í" =&gt; "i",&lt;br /&gt;       "Í" =&gt; "I",&lt;br /&gt;       "î" =&gt; "i",&lt;br /&gt;       "Î" =&gt; "I",&lt;br /&gt;       "ì" =&gt; "i",&lt;br /&gt;       "Ì" =&gt; "I",&lt;br /&gt;       "ó" =&gt; "o",&lt;br /&gt;       "Ó" =&gt; "O",&lt;br /&gt;       "ô" =&gt; "o",&lt;br /&gt;       "Ô" =&gt; "O",&lt;br /&gt;       "õ" =&gt; "o",&lt;br /&gt;       "Õ" =&gt; "O",&lt;br /&gt;       "ò" =&gt; "o",&lt;br /&gt;       "Ò" =&gt; "O",&lt;br /&gt;       "ú" =&gt; "u",&lt;br /&gt;       "Ú" =&gt; "U",&lt;br /&gt;       "ù" =&gt; "u",&lt;br /&gt;       "Ù" =&gt; "U",&lt;br /&gt;       "ü" =&gt; "u",&lt;br /&gt;       "Ü" =&gt; "U",&lt;br /&gt;       "ñ" =&gt; "n",&lt;br /&gt;       "Ñ" =&gt; "N",&lt;br /&gt;       "ý" =&gt; "y",&lt;br /&gt;       "Ý" =&gt; "Y",&lt;br /&gt;       "\"" =&gt; "",&lt;br /&gt;       "'" =&gt; "",&lt;br /&gt;       "," =&gt; " "&lt;br /&gt;   );&lt;br /&gt; &lt;br /&gt;   return strtr($str, $arrConv);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function fString2BuscaSql($str)&lt;br /&gt;{&lt;br /&gt;   $str = trim($str);&lt;br /&gt;   while (strpos($str, "  ")) $str = str_replace("  ", " ", $str);&lt;br /&gt; &lt;br /&gt;   $str = fHtmlEntitiesSemAcento($str);    // Retira todos os acentos.&lt;br /&gt; &lt;br /&gt;   $cSimples = array("a", "e", "i", "o", "u", "n", "y", "c");&lt;br /&gt;   $cEnv = array("{[a]}", "{[e]}", "{[i]}", "{[o]}", "{[u]}", "{[n]}", "{[y]}", "{[c]}");&lt;br /&gt;   $str = str_replace($cSimples, $cEnv, $str);&lt;br /&gt; &lt;br /&gt;   $cRegexp = array(&lt;br /&gt;       "(a|ã|á|à|ä|â|á|â|ã|à|ä|Á|Â|Ã|À|Ä)",&lt;br /&gt;       "(e|é|è|ë|ê|é|ê|è|ë|É|Ê|È|Ë)",&lt;br /&gt;       "(i|í|ì|ï|î|í|î|ì|ï|Í|Î|Ì|Ï)",&lt;br /&gt;       "(o|õ|ó|ò|ö|ô|ó|õ|ô|ò|ö|Ó|Õ|Ô|Ò|Ö)",&lt;br /&gt;       "(u|ú|ù|ü|û|ú|û|ù|ü|Ú|Û|Ù|Ü)",&lt;br /&gt;       "(n|ñ|ñ|Ñ)",&lt;br /&gt;       "(y|ý|ý|Ý)",&lt;br /&gt;       "(c|ç|ç|Ç)"&lt;br /&gt;   );&lt;br /&gt; &lt;br /&gt;   $str = str_replace($cEnv, $cRegexp, $str);&lt;br /&gt;   $str = str_replace(" ", "*", $str);&lt;br /&gt; &lt;br /&gt;   return $str;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;No caso de maiores dúvidas, comentem!&lt;br /&gt;&lt;br /&gt;Referência: &lt;a href="http://www.drsolutions.com.br/exemplos/regesxp_mysql.pdf"&gt;http://www.drsolutions.com.br/exemplos/regesxp_mysql.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Até mais.&lt;br /&gt;&lt;br /&gt;Daniel Monteiro&lt;br /&gt;Diretor de Projetos de Software&lt;br /&gt;Prodweb - Comunicação digital e Soluções de software para web&lt;br /&gt;&lt;a href="http://www.prodweb.com.br/"&gt;www.prodweb.com.br&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3309219564532965443-1917418630388797505?l=prodwebdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prodwebdigital.blogspot.com/feeds/1917418630388797505/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://prodwebdigital.blogspot.com/2011/03/buscar-palavras-acentuadas-no-mysql-com.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/1917418630388797505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/1917418630388797505'/><link rel='alternate' type='text/html' href='http://prodwebdigital.blogspot.com/2011/03/buscar-palavras-acentuadas-no-mysql-com.html' title='Buscar palavras acentuadas no MySQL com expressões regulares'/><author><name>Daniel Monteiro</name><uri>http://www.blogger.com/profile/06737282546868390721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Oad3_o-6pzs/Te-iy9ufwUI/AAAAAAAAANA/JgK07PhgMxc/s220/foto_im5.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3309219564532965443.post-8128804342234384598</id><published>2011-02-25T07:24:00.001-08:00</published><updated>2011-03-01T12:48:35.124-08:00</updated><title type='text'>Prodweb - comunicação digital e soluções de software para web</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Software ERP, EAD, Georeferenciamento, e-commerce, CMS, sites e portais, design, gestão de conteúdo, comunicação institucional na web, hotsites e campanhas de marketing digital, mídias sociais, links patrocinados, uso de ferramentas para resultados eficientes de comunicação online, web analytics, SEO.&lt;br /&gt;&lt;br /&gt;Qualidade e agilidade no atendimento, suporte incondicional, inovações e tecnologia.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Conheça nossos trabalhos, nossa metodologia com nossa equipe e por que a Prodweb fica em uma linda e pequena cidade.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;a href="http://www.prodweb.com.br/"&gt;http://www.prodweb.com.br/&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3309219564532965443-8128804342234384598?l=prodwebdigital.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prodwebdigital.blogspot.com/feeds/8128804342234384598/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://prodwebdigital.blogspot.com/2011/02/prodweb-comunicacao-digital-e-solucoes.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/8128804342234384598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3309219564532965443/posts/default/8128804342234384598'/><link rel='alternate' type='text/html' href='http://prodwebdigital.blogspot.com/2011/02/prodweb-comunicacao-digital-e-solucoes.html' title='Prodweb - comunicação digital e soluções de software para web'/><author><name>Daniel Monteiro</name><uri>http://www.blogger.com/profile/06737282546868390721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Oad3_o-6pzs/Te-iy9ufwUI/AAAAAAAAANA/JgK07PhgMxc/s220/foto_im5.jpg'/></author><thr:total>0</thr:total></entry></feed>
