Riconoscere e creare link Web e Mail

Un applicazione pratica del precedente post. Questa funzione prende in input un testo, riconosce indirizzi mail e web e crea automaticamente i link

function MakeLinkInText($text) {

// funzione di trattamento del testo in visualizzazione

// prende un testo, cerca mail e indirizzi web, e li linka

// si presuppone che il testo sia gia pronto e non da de-quotare

$ta = explode(” “,$text);

foreach( $ta as $key => $value) {

if (eregi(“^([a-z0-9]|\\-|\\.)+@(([a-z0-9]|\\-)+\\.)+[a-z]{2,4}$”, $ta[$key])) {

// match per email

$ta[$key] = “<a href=’mailto:”.$ta[$key].”‘>”.$ta[$key].”</a>”;

}

if (eregi(“^(www.|\\WWW.)+(([a-z0-9]|\\-)+\\.)+[a-z]{2,4}$”, $ta[$key])) {

// match per web senza protocollo

$ta[$key] = “<a href=’http://”.$ta[$key].”‘>”.$ta[$key].”</a>”;

}

if (eregi(“^(http://www.|\\http://WWW.)+(([a-z0-9]|\\-)+\\.)+[a-z]{2,4}$”, $ta[$key])) {

// match per web con protocollo

$ta[$key] = “<a href='”.$ta[$key].”‘>”.$ta[$key].”</a>”;

}

}

$text = implode(” “,$ta);

return $text;

}

Migliorare la propria produttività in PHP

Ovvero arrivare all’obbiettivo piu velocemente, con meno errori e con meno mal di testa.

L’argomento è gia stato trattato in altri post. Un buon punto di partenza è un framework, ovvero un insieme di classi, funzioni e moduli che si occupino delle operazioni piu ripetitive e che siano sufficentemente “astratti” da essere riutilizzabili in tutti i progetti. Vedi il post sull’argomento.

Un altro metodo per velocizzare è utilizzare una interfaccia di sviluppo adeguata. E il blocco note (per i MS-Fanboys) o vim (per i linuxari) non rientrano in questa definizione.

Un buon ambiente di sviluppo deve :

  • essere in grado di farti muovere agilmente anche in progetti costituiti da centinaia di files
  • avere una guida pronta e interattiva perche capita a tutti di dimenticarsi il funzionamento di una struttura
  • evidenziare il codice in modo da renderlo piu facile da interpretare
  • supportare la sincronizzazione col server (cvs, ftp, condivisione locale)
  • rendere inutile l’utilizzo di phpmyadmin, fornendo la possibilita di navigare il database oltre che i file
  • conoscere l’intero progetto, suggerendo variabili e classi create dal programmatore, non solo quelle proprie di php
  • essere veloce: il tempo si usa per scrivere codice non per aspettare che il programma carichi

Un sogno ? Forse … io sono ancora alla ricerca. Alcune di queste cose le fa il classico Adobe Dreamweaver, altre le ho trovate in PHP Designer 2007

Se conoscete un ambiente di sviluppo che abbia tutto questo suggeritemelo. Io, intanto, continuo a cercare.

Charset

Gestire correttamente il charset per lo scambio di dati tra client, server web e server dati è molto importante.

Per siti solo in italiano, o al massimo in lingue europee il discorso è semplice. Basta settare in ogni componente del processo il charset corretto.

PHP : header(‘Content-Type: text/html; charset=iso-8859-15′);
HTML: <meta equiv=”Content-Type” content=”text/html; charset=iso-8859-15″>
MySQL: Collation latin1_swedish_ci

Il Charset iso-8859-15 gestisce correttamente tutte le lingue europee e include il simbolo dell’euro. Per esigenze piu complesse si puo usare l’ UTF-8, ma raramente è necessario.

In teoria il webserver dovrebbe aggiungere gia tra gli header che invia di sua iniziativa il charset ma questo potrebbe essere differente da quello impostato in mysql o adirittura non essere settato (lasciando al browser il compito di capire quale charset meglio si adatti al contenuto che deve visualizzare) perciò specificarlo in modo esplicito è un ottima abitudine

Framework PHP

La programmazione, come si sà, spesso porta ad un uso eccessivo di Copia-e-Incolla. Il riciclo di codice però porta alla difficoltà di mantenimento. Certo, il codice per mostrare il contenuto di una tabella è bene o male sempre lo stesso, ma doverlo copiare, incollare e adattare per 25 tabelle differente puo essere fastidioso.

Ancora di piu se poi capita di dover fare una piccola modifica.

Come fare allora ?
I Framework esistono per questo. Con semplici chiamate di funzioni o oggetti si possono gestire tutte quelle richieste ripetitive, in modo veloce e meno ripetitvo.
I framework si possono creare da zero, ma questa attività richiede una certa dimestichezza con la progettazione di oggetti per essere efficente, o utilizzare dei pacchetti OS.

CakePHP o Smarty possono fare al caso vostro se non avete tempo per svilupparvi un vostro framework, o semplicemente non ne avete voglia, o credete che un team di sviluppo skillato possa essere piu bravo di voi (cosa vera nella maggior parte dei casi)