Inércia Sensorial

27 de May de 2009

Substituir múltiplas linhas por apenas uma, em PHP

Filed under: PHP — Tags: — inerte @ 21:41

Bati um pouco a cabeça para achar a expressão regular mas lá vai:

1
$string = preg_replace("/(\r\n|\n|\r)+/", "\n", $string);

15 de May de 2007

Procura binária no PHP

Filed under: PHP — inerte @ 22:41

Uma coisa é certa, a função in_array do PHP é devagar, lerda demais.

Existe uma alternativa para pesquisar se o elemento está na matriz chamada “procura binária”, que aliás, tanto faz a linguagem que você usa, as idéias são as mesmas. O conceito é simples, ver se o item está no meio da matriz, se não estiver, cortar ela no meio, ver se está na metade, se não estiver, cortar a metade ao meio, ad infinitum, ou até que dure.

Imagine que você tenha de procurar o nome “Julio Nobrega” na lista telefônica. Ir de item em item e ver se cada um equivale ao termo é loucura. Oras, abra a lista bem no meio e veja o nome, se ele for Julio Nobrega, pronto. Se não for, o nome que está no meio, é maior ou menor que o nosso termo? Se for maior, parta na metade a lista e procure na primeira parte. Eliminamos 50% de onde vamos procurar num piscar de olhos. Repita isso, e o espaço de procura vai diminuindo até só sobrar o termo pesquisado. Muito melhor que um por um.

Lá vai a função:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function procura_binaria($elemento, $matriz)
{
    $baixo = 0;
    $alto = sizeof($matriz) - 1;
    while ($baixo <= $alto) { 
        $meio = floor(($baixo + $alto) / 2);
        if ($elemento == $matriz[$meio]) {
            return $matriz[$meio];
        } else {
            if ($elemento < $matriz[$meio]) {
                $alto = $meio - 1;
            } else {
                $baixo = $meio + 1;
            }
        }
    }
    return false; // Não achou!
}

Usar é moleza:

1
2
3
if (!pesquisa_binaria($termo, $matriz)) {
    echo 'Não achou!';
}

30 de December de 2005

PHP named parameters with default values

Filed under: PHP — inerte @ 04:06

I got a comment by Adam Kramer, whose blog I linked on the original article about PHP named parameters, saying that would be cool to have a mix of default and named parameters.

So I made a nice cup of coffe and a few hacks later, came up with a way to do it, and went to tell Adam. Well, sadly his WordPress broke my HTML text (just like mine will probably do it too), so I am posting it here.

(more…)

29 de December de 2005

PHP named parameters alternative

Filed under: PHP — inerte @ 13:46

Looks like PHP won’t get named parameters on version 6. And, well, I am not the only one that want it 🙂 . It’s a feature of Python that I love. Why? Consider the following situation:

You’re making a function/method to return a string with HTML code for an input field.

1
2
3
4
function inputField($name, $maxlength = 50, $size = 20)
{
    return "<input type=\"text\" name=\"$name\" size=\"$size\" maxlength=\"$maxlength\" /> ";
}

(more…)

28 de October de 2005

Diferenças entre objetos

Filed under: PHP — inerte @ 17:13

Essa função retorna quais atributos são diferentes entre dois objetos, e opcionalmente você pode especificar apenas para verificar alguns desses atributos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function diff($objeto_antes, $objeto_depois, $atributos_especificos = array())
{
    $diff = array();
    foreach ($objeto_antes as $atributo => $valor) {
        if (isset($objeto_depois->$atributo)) {
            // foram especificados atributos para comparar? ...
            if (sizeof($atributos_especificos) > 0) {
                // ... o atributo atual está na lista?
                if (in_array($atributo, $atributos_especificos)) {
                    if ($objeto_depois->$atributo != $valor) {
                        $diff[] = $atributo;
                    }
                }
            } else {
                if ($objeto_depois->$atributo != $valor) {
                    $diff[] = $atributo;
                }
            }
        }
    }
 
    return $diff;
}

03 de September de 2005

Introdução ao Ajax

Filed under: Javascript,PHP — inerte @ 02:05

O que é Ajax?

Ajax não é uma nova tecnologia, metodologia ou linguagem de programação, mas sim um acrônimo para Asynchronous JavaScript And XML. É uma combinação de técnicas disponíveis desde meados do ano 2000, consistindo de:

(X)HTML e CSS
Document Object Model
XMLHttpRequest

(more…)

Powered by WordPress