Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-02-2010, 11:06   #1
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
[PHP] Funzioni su stringhe

Ciao ragazzi, sto imparando il php e mi sono imbattuto in un piccolo problema con le stringhe. Per prima cosa mi servirebbe sapere come faccio a trovare se una stringa contiene prima dei numeri e dopo lo spazio delle lettere e dei numeri. Per esempio ho la stringa
"1.2 ciao" --> va bene;
"ciao" --> non va bene;
"1.2" --> non va bene;
"1.2ciao" --> non va bene.
Dovrei provare le espressioni regolari? Se si, conoscete qualche guida esaustiva che spieghi bene come si costruiscono le espressioni?

Seconda domanda che vorrei porvi. Ho una stringa che contiene dei caratteri, vorrei sapere come faccio a contare dei caratteri particolari che sono in quella stringa. Ad esempio se ho la stringa "1.1.11111.1" voglio sapere in questa stringa quanti "." ci sono e quindi la funzione dovrebbe restituirmi il numero 3.
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 16:07   #2
CozzaAmara
Senior Member
 
L'Avatar di CozzaAmara
 
Iscritto dal: Nov 2008
Messaggi: 411
Ciao,

qui puoi trovare un'ottima guida sulle espressioni regolari.

Per la seconda richiesta puoi semplicemente usare la funzione array_count_values per contare le occorrenze di un determinato valore.

Es:
Prendi la tu stringa, la "esplodi" in un array dove ogni lettera corrisponde ad un elemento dell'array, quindi cerchi la chiave dello stesso con il simbolo che ti interessa conteggiare e ne recuperi il valore che poi altro non è che il numero di occorrenze.
__________________
CozzaAmara è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 16:11   #3
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
Grazie mille, sei stato gentilissimo.
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 16:54   #4
Fibrizio
Member
 
L'Avatar di Fibrizio
 
Iscritto dal: Oct 2009
Città: In una città
Messaggi: 67
Quote:
Originariamente inviato da mkel84 Guarda i messaggi
Ciao ragazzi, sto imparando il php e mi sono imbattuto in un piccolo problema con le stringhe. Per prima cosa mi servirebbe sapere come faccio a trovare se una stringa contiene prima dei numeri e dopo lo spazio delle lettere e dei numeri. Per esempio ho la stringa
"1.2 ciao" --> va bene;
"ciao" --> non va bene;
"1.2" --> non va bene;
"1.2ciao" --> non va bene.
Dovrei provare le espressioni regolari? Se si, conoscete qualche guida esaustiva che spieghi bene come si costruiscono le espressioni?
Per le espressioni regolari sulla tua stringa puoi usare qualcosa di simile

Codice PHP:
$txt '"2.2 ciao" --> va bene; 
"ciaow" --> non va bene;
"1.2" --> non va bene;
"1.2ciaow" --> non va bene.'
;

preg_match_all'/([0-9][\.?][0-9]*[ ][A-Z][A-Z0-9]*)/i' $txt $matches ); 
Che individuerà solamente la prima stringa.

MOD:

il risultato sarà un array in $matches con il seguente contenuto

Array ( [0] => Array ( [0] => 2.2 ciao ) [1] => Array ( [0] => 2.2 ciao ) )

Ultima modifica di Fibrizio : 12-02-2010 alle 16:57.
Fibrizio è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:26   #5
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
Quote:
Originariamente inviato da Fibrizio Guarda i messaggi
Per le espressioni regolari sulla tua stringa puoi usare qualcosa di simile

Codice PHP:
$txt '"2.2 ciao" --> va bene; 
"ciaow" --> non va bene;
"1.2" --> non va bene;
"1.2ciaow" --> non va bene.'
;

preg_match_all'/([0-9][\.?][0-9]*[ ][A-Z][A-Z0-9]*)/i' $txt $matches ); 
Che individuerà solamente la prima stringa.

MOD:

il risultato sarà un array in $matches con il seguente contenuto

Array ( [0] => Array ( [0] => 2.2 ciao ) [1] => Array ( [0] => 2.2 ciao ) )
Ok provo e ti faccio sapere
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:31   #6
Fibrizio
Member
 
L'Avatar di Fibrizio
 
Iscritto dal: Oct 2009
Città: In una città
Messaggi: 67
piccola modifica alla stringa

Codice PHP:
'/([0-9]*[\.?][0-9]*[ ][A-Z][A-Z0-9]*)/i' 
in questo modo prima del punto ci possono essere n numeri.
Fibrizio è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:41   #7
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
ok, nella tua espressione, se l'ho letta bene, prevedi prima dello spazio una serie di numeri con i punti, nella seconda parte sia numeri che lettere, giusto? I punti sono opzionali, è così? Posso inoltre mettere qualsiasi cosa dopo lo spazio?
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:43   #8
Fibrizio
Member
 
L'Avatar di Fibrizio
 
Iscritto dal: Oct 2009
Città: In una città
Messaggi: 67
Quote:
Originariamente inviato da mkel84 Guarda i messaggi
ok, nella tua espressione, se l'ho letta bene, prevedi prima dello spazio una serie di numeri con i punti, nella seconda parte sia numeri che lettere, giusto? I punti sono opzionali, è così? Posso inoltre mettere qualsiasi cosa dopo lo spazio?
sì, in realtà si potrebbe correggere ancora una volta in

Codice PHP:
'/([0-9]*[\.?][0-9]*[ ][A-Z0-9]*)/i' 
cioè non obbligando la parola successiva a cominciare con una lettera ma con qualsiasi carattere alfanumerico.

Se devi lavorare sulle espressioni regolari ti suggerisco anche questo sito e l'EditPad, che permette di fare molte prove, prima di ficcare il testo per esempio nel php, dove è comunque un po' più difficoltoso provare.

ps: i punti non sono opzionali

Ultima modifica di Fibrizio : 12-02-2010 alle 17:46.
Fibrizio è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:48   #9
Fibrizio
Member
 
L'Avatar di Fibrizio
 
Iscritto dal: Oct 2009
Città: In una città
Messaggi: 67
se vuoi mettere i punti opzionali devi scrivere


Codice PHP:
'/([0-9.]+[ ][a-z0-9]*)/i' 

Ultima modifica di Fibrizio : 12-02-2010 alle 17:50.
Fibrizio è offline   Rispondi citando il messaggio o parte di esso
Old 12-02-2010, 17:58   #10
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
Quote:
Originariamente inviato da Fibrizio Guarda i messaggi
se vuoi mettere i punti opzionali devi scrivere


Codice PHP:
'/([0-9.]+[ ][a-z0-9]*)/i' 
Perfetto, grazie mille per tutto.
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2010, 10:02   #11
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
Quote:
Originariamente inviato da CozzaAmara Guarda i messaggi
Ciao,

qui puoi trovare un'ottima guida sulle espressioni regolari.

Per la seconda richiesta puoi semplicemente usare la funzione array_count_values per contare le occorrenze di un determinato valore.

Es:
Prendi la tu stringa, la "esplodi" in un array dove ogni lettera corrisponde ad un elemento dell'array, quindi cerchi la chiave dello stesso con il simbolo che ti interessa conteggiare e ne recuperi il valore che poi altro non è che il numero di occorrenze.
Ho fatto così
$arraypunti = str_replace('.', ' . ', $array2[numero_indice]);
$arraypunti = explode(' ', $arraypunti);
$arraypunti = array_count_values($arraypunti);

Adesso come faccio a recuperare il valore dell'array con il punto?
mkel84 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2010, 10:16   #12
Fibrizio
Member
 
L'Avatar di Fibrizio
 
Iscritto dal: Oct 2009
Città: In una città
Messaggi: 67
Quote:
Originariamente inviato da mkel84 Guarda i messaggi
Ho fatto così
$arraypunti = str_replace('.', ' . ', $array2[numero_indice]);
$arraypunti = explode(' ', $arraypunti);
$arraypunti = array_count_values($arraypunti);

Adesso come faccio a recuperare il valore dell'array con il punto?
se vuoi contare il numero di occorrenze puoi sempre farlo con

Codice PHP:
echo preg_match_all'/\./' '1.1.11111.1' $mtc ); 
preg_match_all() restituisce un intero che rappresenta il numero di occorrenze in una stringa. In questo caso restituisce 3. la variabile $mtc raccoglie i valori trovati.
Fibrizio è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2010, 10:20   #13
mkel84
Senior Member
 
L'Avatar di mkel84
 
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
Quote:
Originariamente inviato da Fibrizio Guarda i messaggi
se vuoi contare il numero di occorrenze puoi sempre farlo con

Codice PHP:
echo preg_match_all'/\./' '1.1.11111.1' $mtc ); 
preg_match_all() restituisce un intero che rappresenta il numero di occorrenze in una stringa. In questo caso restituisce 3. la variabile $mtc raccoglie i valori trovati.
Grazie mille, così è molto più veloce.
mkel84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
Ecco il nuovo Amazon Luna: videogiochi p...
ISRO: prosegue lo sviluppo della navicel...
CoD Black Ops 7 offrirà la beta p...
Il telescopio spaziale James Webb sta ai...
Crucial spinge sui moduli LPCAMM2: fino ...
Imgur blocca gli utenti del Regno Unito:...
ROG Xbox Ally già in consegna: qu...
Ubisoft annuncia Vantage Studios: Assass...
Il solare diventa la prima fonte di elet...
Google Home si rinnova completamente: ar...
Dense Geometry Format (DGF): novit&agrav...
Gemini for Home arriva a ottobre sui dis...
Amazon Smart Air Quality Monitor: a soli...
Mazzata Raspberry Pi, i prezzi aumentano...
Amazon Seconda Mano - Warehouse: extra s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v