Sunday, September 26, 2010
Auto Refreshing News System With Built-In HTML Search
If not you will probably have to soon.
This is my new post on Woork Up! Check it out:
Friday, July 23, 2010
Thursday, July 22, 2010
Expressões Regulares
A intenção deste post é organizar num lugar as principais e mais simples características das expressões regulares. Desta forma serve tanto para quem está começando para quem deseja consultar.
Então, vamos lá!
O que são expressões regulares?
São conjutos de caracteres e símbolos que, quando agrupados corretamente, formam uma expressão.
"É como o brinquedo LEGO, várias pecinhas diferentes, cada uma com sua característica, que juntas compõem estruturas completas e podem ser arranjadas com infinitas combinações diferentes." guia-er
Para que servem?
Expressões regulares ajudam a você definir padrões mais específicos que te ajudarão a buscar e/ou alterar em um contexto mais abrangente.
Exemplo
[rpg]ato combinará com: gato, rato e pato.
Mas expressões vão muito além disto, no dia-a-dia seu uso é muito prática para manipular diversos dados como: data/hora, endereço de email, telefones, cpf, conteudos de , praticamente qualquer coisa!
Mãos a massa!
Metacaracteres
| Representantes | Definição | Exemplos | ||
|---|---|---|---|---|
| . | ponto | Um caractere qualquer | Casa com qualquer coisa, inclusive com si próprio | n.o = não, nao, ... 13.15 = 13:15, 13 15, 13.15 |
| [] | lista | [...] - Lista de caracteres permitidos | Casa quem quem conhece. Dentro da lista, todo mundo é "normal". - significa intervalo | [0123456789] = [0-9] n[ãa]o = não, nao a-z, A-Z pega "[\]^_" mas não pega os caracteres acentuados "aéóõç". |
| [^] | lista negada | [^...] - Lista de caracteres proibidos | Segue todas as regras de uma lista "comum" ^ não deve ser o primeiro item da lista. A lista negava deve casar algo | [^0-9] casa tudo que não for número, inclusive espaços em branco, símbolos, letras, qualquer coisa. |
| Quantificadores | Indicam o número de repetições permitidas para a entidade anterior | exemplos | ||
| ? | opcional | zero ou um | Torna o caracter anterior opcional é util para procurar palavras no singular e pluar | carros? carro, carros |
| * | asterisco | zero, um ou mais | A entidade anterior pode aparecer em qualquer quantidade. | 6*0 = 0, 60, 660, 6660, ..., 66666666666666660, ... |
| + | mais | um ou mais | Funcionamento idêntico ao *, a única diferença é que o + não é opcional. A entidade anterior tem que casar pelo menos uma vez. | 6+0 = 60, 660, ..., 666666666660, ... bi+p = bip, biip, biiip, biiiip, ... |
| {n,m} | chaves | de n até m | Solução controlada para especificar exatamente quantas repetições se deseja da entidade anterior Você pode especificar um úmero exato, um mínimo, um máximo ou uma faixa numérica. | {1,5} = de 1 a 5 {5,} = pelo menos 5 {3} = exatamente 3 |
| Âncoras | Caracteres que marcam uma posição específica na linha | Exemplos | ||
| ^ | circunflexo | Marca início de uma linha. ^Só tem esta função no começo da linha. | ^[0-9] = O primeiro item da linha deve ser um número | |
| $ | cifrão | fim da linha | ^$ Linha vazia ^.{10,20}$ = Linha que tenha entre 10 e 20 caracteres | |
| \b | borda | início ou fim de uma palavra | O conceito "palavra" engloba letras, número e sublinhado | dia = dia, diafragma, melodia, bom-dia \bdia = dia, diafragma, bom-dia dia\b = dia, melodia, bom-dia \bdia\b = dia, bom-dia |
| Outros | Exemplos | |||
| \ | escape | torna literal o caractere literal | \* = [*] = asterisco literal \. = . \\ = \ | |
| | | ou | um ou outro | .[php|html] | |
| () | grupo | delimitador de um grupo | (ha!)+ ha!, ha!ha!, ha!ha!ha!, ... (super|hiper)mercado | |
| \1 | retrovisor | \1...\9 - Texto casado nos grupos 1...9 | (quero-\1) quero-quero ([A-Za-z]+)-\1 (lenta)(mente) é \2 \1 lentamente é mente lenta | |
Todo conteúdo acima foi inspirado no livro e site abaixo. Quem se interessar corra atrás, compre o livre, porque vale muito a pena!
http://guia-er.sourceforge.net/
PHP - Validando CPF
Segue abaixo uma classe muito útil para quem precisa validar CPF's.
class CCpfValidator extends CValidator {
protected function validateAttribute($model,$attribute) {
$value = $model->$attribute;
if (!$this->_validateCpf($value)) {
$model->addError($attribute,"Você deve informar um CPF válido.");
}
}
protected function _validateCpf($cpf) {
if ($cpf == '12345678909') return false;
if (!preg_match("/^[0-9]{11}$/",$cpf)) return false;
$soma1 = $soma2 = array();
for ($x = 0; $x < 10; $x++) {
if ($cpf == str_repeat($x, 11)) return false;
if ($x < 9) $soma1[] = $cpf[$x] * (10 - $x);
$soma2[] = $cpf[$x] * (11 - $x);
}
$soma1 = array_sum($soma1) % 11;
$soma2 = array_sum($soma2) % 11;
if(($soma1<2?0:11-$soma1)!=$cpf{9})return false;
return (($soma2<2?0:11-$soma2)==$cpf{10});
}
}
Tuesday, July 20, 2010
Top 20+ Best Mysql Pratices
Direct link: http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/
Using jQuery to search in HTML
What are we going to do?
How?
The example HTML structure
<div id="search">
<input type="text" name="q" />
</div>
<ul id="content">
<li>Donec posuere lobortis urna, sit amet adipiscing purus blandit vel.</li>
<li>Morbi in sem quis dui placerat ornare. Pellentesque odio nisi.</li>
<li>Praesent dapibus, neque id cursus faucibus. </li>
<li>Phasellus ultrices nulla quis nibh. Quisque a lectus.</li>
<li>Duis tempus turpis in neque sagittis at adipiscing. Nulla congue turpis ac turpis aliquet placerat.</li>
<li>Pellentesque fermentum dolor.</li>
</ul>
JS
$(function(){
/**
* Fix to disable case-sensitive
**/
$.expr[':'].icontains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
};
$("div#search input[type=text]").keydown(function(e){
var $input = $(this);
if($input.val() != ''){
$('ul#content li').hide();
$('ul#content li:icontains('+$input.val()+')').show();
}
});
});
Optional CSS
body{
margin:0;
}
div#search{
background:#ddd;
border-bottom:1px solid #bbb;
padding:3px 10px;
}
div#search input[type=text]{
border:1px solid #aaa;
width:100%;
font-size:16px;
}
ul#content{
margin:0;
padding:0;
list-style:none;
}
ul#content li{
background:#E0EDFF;
border-bottom:1px solid #BACCE6;
padding:3px 5px;
}
Example of use
A good place to use this technique is on a chat list. You'll search all your contacts without refreshing or sending many ajax requests. Just asking your HTML!Usando jQuery para procurar no HTML
O que vamos fazer?
Como?
A estrutura HTML do exemplo
<div id="search">
<input type="text" name="q" />
</div>
<ul id="content">
<li>Donec posuere lobortis urna, sit amet adipiscing purus blandit vel.</li>
<li>Morbi in sem quis dui placerat ornare. Pellentesque odio nisi.</li>
<li>Praesent dapibus, neque id cursus faucibus. </li>
<li>Phasellus ultrices nulla quis nibh. Quisque a lectus.</li>
<li>Duis tempus turpis in neque sagittis at adipiscing. Nulla congue turpis ac turpis aliquet placerat.</li>
<li>Pellentesque fermentum dolor.</li>
</ul>
JS
$(function(){
/**
* Fix para desabilitar o case-sensitive
**/
$.expr[':'].icontains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0;
};
$("div#search input[type=text]").keydown(function(e){
var $input = $(this);
if($input.val() != ''){
$('ul#content li').hide();
$('ul#content li:icontains('+$input.val()+')').show();
}
});
});
CSS Opcional
body{
margin:0;
}
div#search{
background:#ddd;
border-bottom:1px solid #bbb;
padding:3px 10px;
}
div#search input[type=text]{
border:1px solid #aaa;
width:100%;
font-size:16px;
}
ul#content{
margin:0;
padding:0;
list-style:none;
}
ul#content li{
background:#E0EDFF;
border-bottom:1px solid #BACCE6;
padding:3px 5px;
}



