View Full Version : [PHP]Espressione regolare
Ciao ragazzi.
Ho bisogno di un'espressione regolare che data ad esempio la stringa 123blabla
mi restituisca solo blabla, cioè elimini le prime cifre finkè sono numeri. Ho provato in questo modo ma mi fa la cosa inversa, cioè mi restituisce solo i numeri.
$stringa = "123blabla";
preg_match("/^[0-9]*/",$stringa,$match);
echo $match[0]; //restituisce 123
grazie per l'aiuto
dinkydinkydinky
24-02-2007, 19:23
Ciao, il primo campo della funzione "preg_match" consiste nel pattern. Nel tuo caso con "/^[0-9]*/", la funzione ti ritornerà in $match[0] solo i numeri contenuti nella stringa passata come input. A questo punto basta che elimini i numeri trovati all'inizio della stringa, ad esempio utilizzando la funzione "substr".
Ecco il codice:
<?php
$stringa = "123blabla";
preg_match("/^[0-9]*/", $stringa, $match);
$stringa = substr($stringa, strlen($match[0]));
echo $stringa;
?>
Spero ti sia di aiuto :D, Ciao!
Ho bisogno di un'espressione regolare che data ad esempio la stringa 123blabla
mi restituisca solo blablaFai così:
preg_match("/^[0-9]*(\\w+)/",$stringa,$match);
Se fai un var_dump di $match ottieni:
array(2) {
[0]=>
string(9) "123blabla"
[1]=>
string(6) "blabla"
}Sicuramente hai già capito cosa succede: in $match[0] hai l'intera parte matchata, mentre in $match[1] solo la parte catturata dalle parentesi.
EDIT: Se invece di usare \w (che prende un "word" character) vuoi prendere qualunque cosa, puoi mettere (.+)
Fai così:
preg_match("/^[0-9]*(\\w+)/",$stringa,$match);
Se fai un var_dump di $match ottieni:
array(2) {
[0]=>
string(9) "123blabla"
[1]=>
string(6) "blabla"
}Sicuramente hai già capito cosa succede: in $match[0] hai l'intera parte matchata, mentre in $match[1] solo la parte catturata dalle parentesi.
EDIT: Se invece di usare \w (che prende un "word" character) vuoi prendere qualunque cosa, puoi mettere (.+)
:eek:
perchè non mi trovo?
$stringa2 = $_POST[DepEquip];
preg_match("/^[0-9]*(\\w+)/",$stringa2,$mazz);
echo"$mazz[0]";
scusa la stupiddaggine, errore mio. mi trovo perfettamente.
ultima cosa, se la stringa è un'intera riga? cioè es: "123blabla oppure bloblo"
l'espressione regolare dovrebbe fare lo stesso restituire "blabla oppure bloblo"
ma per ora mi restituisce solo blabla
grazie ancora sciao
ultima cosa, se la stringa è un'intera riga? cioè es: "123blabla oppure bloblo"
l'espressione regolare dovrebbe fare lo stesso restituire "blabla oppure bloblo"
ma per ora mi restituisce solo blablaL'ho spiegato sopra: \w indica un "word character", quindi è normale che interrompa il match appena trova uno spazio. Usa (.+) invece di (\\w+)
Stiwy.NET
27-02-2007, 14:25
Visto che ci siamo sapete dirmi un ottimo sito dove trovare le istruzioni per le regular expression? E' anni che ne cerco una decente,ma non ne trovo mai.!
Visto che ci siamo sapete dirmi un ottimo sito dove trovare le istruzioni per le regular expression? E' anni che ne cerco una decente,ma non ne trovo mai.!Innanzitutto bisogna precisare che i costrutti usati per le espressioni regolari non sono uguali e comuni a tutti i linguaggi di programmazione che ne fanno uso.
Ci sono certamente delle basi comuni (es. le classi di caratteri o i quantificatori ? + *) ma molto spesso ogni linguaggio di programmazione ha il suo "set" di costrutti che magari contiene dei costrutti particolari o differisce da altri linguaggi per delle sottigliezze.
Comunque si può partire da qui:
http://en.wikipedia.org/wiki/Regular_expression
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.