consiglio preg_match_all

james81

Utente Attivo
14 Set 2010
72
0
0
Ciao a tutti,
ho un consiglio da chiedervi:
ho un tag <h2></h2> nel quale è contenuto un'indirizzo:
Es.
HTML:
<h2>
        <a href="http://www.suto.it/aaa/bbbb" >nome</a>
</h2>

ora volevo utilizzare preg_match_all per prelevare l'indirizzo (http://www.suto.it/aaa/bbbb) e il nome, è possibile ?

Grazie
 
Ultima modifica di un moderatore:

Jwebs

Nuovo Utente
3 Mar 2014
5
0
0
Asti
www.jwebs.it
Per una sola ripetizione ti basta preg_match(); Ecco un esempio:
PHP:
<?php

$testo = '<h2>
<a href="http://www.suto.it/aaa/bbbb">nome</a>
</h2>';

preg_match('#<a href="(.+)">(.+)</a>#', $testo, $matches);

var_dump($matches[1]); // indirizzo
var_dump($matches[2]); // nome

?>

Se ci fossero, invece, più link puoi usare preg_match_all() in questo modo:
PHP:
<?php

$testo = '<h2>
<a href="http://www.suto.it/aaa/bbbb">nome</a>
</h2>
<h2>
<a href="http://www.suto.it/ccc/ddd">altro</a>
</h2>';

preg_match_all('#<a href="(.+)">(.+)</a>#', $testo, $matches);

var_dump($matches[1]); // indirizzi
var_dump($matches[2]); // nomi

?>
 

james81

Utente Attivo
14 Set 2010
72
0
0
ho notato una cosa nel codice della pagina che il valore dentro alla cella è a capo, può centrare qualcosa ?
 

Jwebs

Nuovo Utente
3 Mar 2014
5
0
0
Asti
www.jwebs.it
Puoi raffinare l'espressione regolare per catturare anche gli eventuali caratteri a capo, tabulazione ecc. Per esempio:
PHP:
preg_match('#<a\s[^>]*href\s*=\s*"(.+)"[^>]*>\s*([\s\S]*\S+)\s*</a>#', $testo, $matches);
 

james81

Utente Attivo
14 Set 2010
72
0
0
ok, alla fine sono riuscito almeno spero!
volevo vista la gentilezza chiederti un chiarimento:
nei campi che leggo ho la necessità di prelevare un'indirizzo che viene visualizzato così :

Via Rossi, 56
32112 Buggio Sopra (RM)

ora vorrei riuscire a scorporare la viacon il numero civico compreso, il CAP(32112) , PAESE(Buggio Sopra) e PROVINCIA(RM)
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Via Rossi, 56
32112 Buggio Sopra (RM)

Ti ho scritto qualcosa al volo:
PHP:
#> Elenco vie (la riga vuota tra l'una e l'altra non è obbligatoria)
$str = "Via Rossi, 56
32112 Buggio Sopra (RM)

Via Carlo, 156
04052 Città a caso (MI)

Via Del Toro, 1
10100 Amor di Città (TO)";

#> Riconosciamo le informazioni degli indirizzi
preg_match_all("#([^\n,]+),\s+([0-9]+)\s+([^\s]+).*?([^(]+)\(([^)]+)\)#i", $str, $output);

#> Mostriamole in modo ordinato così da avere un idea di cosa ha fatto la regexp
echo '<pre>', print_r($output, true), '</pre>';


Per un indirizzo singolo, ti basta usare il preg_match al posto del preg_match_all.
 

james81

Utente Attivo
14 Set 2010
72
0
0
Codice:
$varindirizzo = "ViaRoma,1613000RomaSud(RM)";  
preg_match("#([^\n,]+),\s+([0-9]+)\s+([^\s]+).*?([^(]+)\(([^)]+)\)#i", $varindirizzo, $output);
#> Mostriamole in modo ordinato così da avere un idea di cosa ha fatto la regexp
echo '<pre>', print_r($output, true), '</pre>';
 

james81

Utente Attivo
14 Set 2010
72
0
0
ho sbagliato! la variabile $varindirizzo è così:

$varindirizzo =" Via Roma, 16
13000 Roma Sud (Rm) ";
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
PHP:
$varindirizzo =" Via Roma, 16
13000 Roma Sud (Rm) "; 

preg_match("#([^\n,]+),\s+([0-9]+)\s+([^\s]+).*?([^(]+)\(([^)]+)\)#i", $varindirizzo, $output);
echo '<pre>', print_r($output, true), '</pre>';

Copiando il codice così com'è output mi viene mostrata così:

Codice:
Array
(
    [0] =>  Via Roma, 16
13000 Roma Sud (Rm)
    [1] =>  Via Roma
    [2] => 16
    [3] => 13000
    [4] =>  Roma Sud 
    [5] => Rm
)

L'ho provato da due computer diversi, con due versioni di PHP diverse e stesso risultato.
A questo punto sei sicuro che la stringa che passi alla regexp sia effettivamente composta a quel modo ? Ti invito comunque a fare una prova in uno script php in cui scrivi solo questo pezzo di codice preso in esame (per testare se almeno di base le regole che ho scritto funzionano, perché se non vanno allora c'è qualcosa di strano).
 

james81

Utente Attivo
14 Set 2010
72
0
0
ho provato a scrivere manualmente la stringa da passargli e effettivamente lo script funziona, come dici te sarà a stringa che gli passo che non è corretta....ho controllato e c'era un <br /> che disturbava, l'ho sostituito e al momento semba che sia tutto ok
 
Ultima modifica:

james81

Utente Attivo
14 Set 2010
72
0
0
ho alcuni indirizzo che nel numero civico sono composti es.

Via Roma, 16\17 13000 Roma Sud (Rm)
Via Roma, 16bis 13000 Roma Sud (Rm)
Via Roma, 16int1 13000 Roma Sud (Rm)
 

Jwebs

Nuovo Utente
3 Mar 2014
5
0
0
Asti
www.jwebs.it
PHP:
<?php

$varindirizzo ="
Via Roma, 16\\17
13000 Roma Sud (Rm)

Via Roma, 16bis
13000 Roma Sud (Rm)

Via Roma, 16int1
13000 Roma Sud (Rm) ";
 
preg_match_all("#([^,]+),\s([\S]+)\s([0-9]{5})\s([^(]+)\s\(([a-z]{2})\)#i", $varindirizzo, $output);

echo '<pre>', print_r($output, true), '</pre>';

?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Consiglio si relazione tabelle MS Access 1
A Consiglio curvatura monitor Programmazione 0
G Consiglio su piattaforma forum da utilizzare CMS (Content Management System) 1
A Consiglio per creazione sito web CMS (Content Management System) 1
C [Diagramma E/R] Consiglio su progetto Database 0
sbolde91 Consiglio gestione Hosting Hosting 2
B Richiesta Consiglio E-commerce CMS (Content Management System) 1
A consiglio su telecamere ip wi-fi Presentati al Forum 0
S Consiglio esercizio Javascript Javascript 2
M Consiglio sulla gestione di Gerarchie Database 0
L Consiglio SEO gestione dominio + free hosting SEO e Posizionamento 6
M [DIAGRAMMA ER] Consiglio su progetto Presentati al Forum 1
R Consiglio Hosting per e-commerce Hosting 8
L Ciao, chiedo consiglio Presentati al Forum 1
Web93 RICHIESTA CONSIGLIO - FARE UN SITO WEB CMS (Content Management System) 1
F Consiglio IP camera per timelapse (anche notturno) IP Cam e Videosorveglianza 0
M [PHP] Consiglio su come istanziare un Bottone PHP 0
S [PHP] Richiesta consiglio PHP 1
M Consiglio su problematica impianto videosorveglianza IP Cam e Videosorveglianza 4
M [HTML] consiglio su label e checkbox riguardo l'allineamento HTML e CSS 3
D consiglio evitare truffe Annunci servizi di Social Media Marketing 11
A [Visual Basic] Consiglio sul datagridview Visual Basic 0
G [Diagramma ER] Consiglio su progetto Database 0
G consiglio acquisto telecamera nascosta in sensore allarme IP Cam e Videosorveglianza 0
N Consiglio struttura database WFM Database 1
Q consiglio per python Programmazione 1
C Consiglio configurazione IPCam on line su pagina web IP Cam e Videosorveglianza 2
A Consiglio hosting offshore?? Hosting 3
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
S Consiglio Gestionale/ERP su commessa Windows e Software 0
A Richiesta consiglio per kit videosorveglianza IP Cam e Videosorveglianza 0
D [Photoshop] Consiglio acquisto tavoletta grafica de xp-pen Photoshop 0
R Consiglio rete cablata Reti LAN e Wireless 4
D Consiglio per rete ufficio Reti LAN e Wireless 0
W [CMS] Un consiglio per il CMS più adatto a me CMS (Content Management System) 2
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
D [HTML] Consiglio su sito Joomla Joomla 6
M [MS Access] consiglio sviluppo query MS Access 1
D Consiglio su come impostare IP statico Reti LAN e Wireless 0
G [PHP] Consiglio su Qry/array PHP 3
M Consiglio su creazione rete Reti LAN e Wireless 0
trattorino Consiglio e parere Annunci servizi di Social Media Marketing 4
Ibernato Consiglio host Hosting 7
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
andreas88 Consiglio valore in euro di un Notebook usato Discussioni Varie 3
G consiglio telecamere per esterno IP Cam e Videosorveglianza 4
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
E Consiglio telecamera wifi motorizzata esterno con power bank IP Cam e Videosorveglianza 5
felino TV Box Android: consiglio su quale acquistare Discussioni Varie 0
A Ciao a tutti, volevo chiedervi un consiglio riguardo l'errore che viene fuori quando tento di lancia Presentati al Forum 1

Discussioni simili