|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
|
[php] estrapolare un messaggio da una stringa
ciao amici,
sto guardando le funzioni explode e similari, però nn riesco a trovare quella che fa al caso mio. data la stringa: search?client=opera&rls=it&q=%22scuola+media%22+%22scuola%22+%22dipartimento+fisica%22+-centro+-%22seconda+elementare%22&sourceid=opera&ie=utf-8&oe=utf-8 vorrei catturare da: &q= fino al successivo & Alla fine dovrei catturare: "scuola media" (come frase) "scuola" "dipartimento fisica" -centro -"seconda elementare" Qualcuno ha idee in merito ?
__________________
Nunc est bibendum Ultima modifica di gaglioppo : 10-09-2005 alle 15:42. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Scusa, ma se fai explode con parametro la "&" ?
Poi per ogni stringa ottenuta cerchi nelle prime due lettere "q="...se lo trovi lo togli e poi sostituisci tutti i %22 ed i + con degli spazi... Dopo fai explode sullo spazio... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
|
ma cosi' otterrei:
"scuola" "media" "scuola" "dipartimento" "fisica" "-centro" "-seconda" "elementare" senza quindi considerare le frasi "scuola media" e "-seconda elementare", dove la negazione nega sia "seconda" che "elementare" Non sono ancora riuscito a trovare una soluzione
__________________
Nunc est bibendum |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai ragione...allora non sostituire %22 con gli spazi, ma sostituisci solo i + con gli spazi...edopo fai explode su %22 e scarta le stringhe formate dai soli spazi..
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
|
e il segno meno (-) come lo gestisco?
%22scuola+media%22+%22scuola%22+%22dipartimento+fisica%22+-centro+-%22seconda+elementare%22 diventa: %22scuola media%22 %22scuola%22 %22dipartimento fisica%22 -centro -%22seconda elementare%22 che diventa: scuola media scuola dipartimento fisica -centro - seconda elementare e quel meno dopo centro dovrebbe stare con "seconda elementare"
__________________
Nunc est bibendum |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quando il - è staccato diventa un problema...credo che ti convenga farti una procedura di scansione carattere per carattere...
Ad esempio: se trovo un meno: cerco il primo carattere diverso dallo spazio, se è un %22 (a questo punti ti conviene sostituirlo con un doppio apice) allora la parola è lunga fino al prossimo %22) altrimenti è lunga fino al prossimo spazio... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Monza
Messaggi: 598
|
uffffffffff
dopo un pomeriggio di fatica ecco il risultato, forse si può ottimizzare, lo posto affinchè possa servire ai posteri: SCOPO: dato un url (di google) fare la sintassi e trovare le frasi e le parole cercate considerando anche il segno - (per gli altri caratteri tipo or e simili, mi permetto di tralasciarli). ESEMPIO: con google cerco: "manuali di php" -"funzioni asp" metodi funzioni truccchi "risoluzione problemi" -"gatti neri e bianchi" l'url sarà: h_t_t_p://w_w_w.google.com/search?hs=U82&hl=it&client=opera&rls=it&q=%22manuali+di+php%22+-%22funzioni+asp%22+metodi+funzioni+truccchi+%22risoluzione+problemi%22+-%22gatti+neri+e+bianchi%22&btnG=Cerca&lr= il codice realizzato: Codice:
<?
$e="http://www.google.com/search?hs=U82&hl=it&client=opera&rls=it&q=%22manuali+di+php%22+-%22funzioni+asp%22+metodi+funzioni+truccchi+%22risoluzione+problemi%22+-%22gatti+neri+e+bianchi%22&btnG=Cerca&lr=";
echo$e;
$t = explode("&q=", $e);
//echo"<br>";
$t2=explode("&", $t[1]);
$x=$t2[0];
$x="*s*".$x;
//echo"<br>x:".$x;
//echo"<br>";
$eq=str_replace("-+", "+-", $x);
$e0=str_replace("-%22", "%22-", $eq);
$e1=str_replace("%22+%22", "*chiusa**aperta*", $e0);
$e2=str_replace("%22+-%22", "*chiusa*-*aperta*", $e1);
$e3=str_replace("-%22", "-*aperta*", $e2);
$e4=str_replace("-%22", "-*aperta*", $e3);
$e5=str_replace("%22+", "*chiusa**s*", $e4);
$e6=str_replace("%22", "*aperta*", $e5);
//echo"<br>";
//echo"<br>e:".$e6;
$e6="*aperta*".$e6;
//echo"<br>";
$t3=explode("*aperta*", $e6);
$dim_t3=0;
$indice1=0;$indice2=0;
$vettore_negativo[]="";
$vettore_positivo[]="";
foreach($t3 as $v) $dim_t3++;
for ($i=0;$i<$dim_t3;$i++){
$ex="*chiusa*".$t3[$i];
$t4=explode("*chiusa*", $ex);
$dim_t4=0;
foreach($t4 as $v) $dim_t4++;
for ($i2=0;$i2<$dim_t4;$i2++){
if($t4[$i2]<>""){
if($t4[$i2]=="*s*"){}
else{
$prefisso = substr($t4[$i2], 0, 3);
if($prefisso=="*s*"){
$puro=str_replace("*s*", "+", $t4[$i2]);
$pulito=explode("+", $puro);
$dim_p=0;
foreach($pulito as $v) $dim_p++;
for ($i3=0;$i3<$dim_p;$i3++)
if($pulito[$i3]<>""){
//echo"<br>w3:".$pulito[$i3];
$pre = substr($pulito[$i3], 0, 1);
if($pre=="-"){
$$pulito[$i3]=str_replace("-", "", $pulito[$i3]);
$vettore_negativo[$indice1]=$pulito[$i3];
$indice1++;
}
else{
$vettore_positivo[$indice2]=$pulito[$i3];
$indice2++;
}
}
}
else{
$puro2=str_replace("+", " ", $t4[$i2]);
//echo"<br>w2:".$puro2;
$pre2 = substr($puro2, 0, 1);
if($pre2=="-"){
$puro2=str_replace("-", "", $puro2);
$vettore_negativo[$indice1]=$puro2;
$indice1++;
}
else{
$vettore_positivo[$indice2]=$puro2;
$indice2++;
}
}
}
}
}
}
echo"<br><br><br><br><br>";
$dim5=0;
foreach($vettore_negativo as $v) $dim5++;
for ($i5=0;$i5<$dim5;$i5++)
echo"<br>VETTORE -:".$vettore_negativo[$i5];
$dim6=0;
foreach($vettore_positivo as $v) $dim6++;
for ($i6=0;$i6<$dim6;$i6++)
echo"<br>VETTORE +:".$vettore_positivo[$i6];
//echo"<br><br><br><br><br>";
?>
Codice:
VETTORE -:funzioni asp VETTORE -:gatti neri e bianchi VETTORE +:manuali di php VETTORE +:metodi VETTORE +:funzioni VETTORE +:truccchi VETTORE +:risoluzione problemi
__________________
Nunc est bibendum |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Bravo...mi dispiace di avrti potuto dare poco aiuto... Ciao
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:01.



















