|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
[PHP][Newbie] uso di split con espressioni regolari
ciao a tutti, sto cercando di splittare un array di stringhe costruite così:
<percorso>t3.mp3<\percorso> dovrei ottenere semplicemente t3.mp3, ma non riesco a usare lo split per dirgli cosa deve fare....sapete suggerirmi? grazie mille ![]()
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
Ciao, non mastico il php ma posso dirti che l'espressione regolare che ti serve dovrebbe essere "<.*?>"
Spero di esserti stato di aiuto, buonanotte! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
split non è la funzione giusta, usa preg_match:
Codice PHP:
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
ok grazie a entrambi :-) proverò con entrambe le soluzione gracias!
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
mmh...usando preg_match ho qualche problemino...ti posto una sezione un pò + completa del codice, forse ho scritto qualche cavolata per cui meglio se chi se ne intende ci da un'occhiata :-)
//ho un array $contenuto che contiene n righe di testo, lo scorro in un ciclo for e se in una riga trovo la parola 'percorso' allora devo prendere il contenuto di questa riga e splittarlo in modo che partendo da questo: <percorso>t3.mp3<\percorso> //contenuto riga io ottenga questo: t3.mp3 //contenuto $buffer preg_match dovrebbe salvare in $buffer la stringa "t3.mp3" e successivamente stamparla a video..solo che mi da errori che capisco poco..e poi non ho capito se $buffer deve essere un array oppure no...mmm help! if(strstr ($contenuto[$g],'percorso')==TRUE){ preg_match("#<percorso>([^<]+)<\percorso>#i", $contenuto[$g], $buffer); echo $buffer[1];
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Ho capito qual'è l'errore (posta anche quelli la prossima volta): di solito i tag si chiudono con la slash (/) e non con la backslash (\), in quest'ultimo caso bisogna escaparla con un'altra backslash (\\) per evitare che il motore dell'espressione regolare cerchi di interpretarla (\p deve essere un carattere speciale delle espressioni regolari), prova con:
Codice PHP:
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
mmm..ti ringrazio per la pazienza e le correzioni ma ancora non funziona , l'errore è sempre li nella sintassi di preg_match cioé:
Warning: preg_match() [function.preg-match]: Compilation failed: unknown property name after \P or \p at offset 20 in C:\Program Files (x86)\EasyPHP 2.0b1\www\Joomla\modules\mod_test\mod_test.php on line 179 che immagino sia proprio la barra \, qualche idea? thanks! :-)
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
![]() prova ad escaparlo due volte: Codice PHP:
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
|
grandissimo!!! idolo funziona adesso! :-D....non ho capito perchè devo mettere tutte queste sequenze di escape, cmq ho visto che funziona sia con \\\\ che con \\\...ma data la mia ignoranza non so il perchè!...grazie mille!
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:44.