Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Replace Aiuto

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58

    Replace Aiuto

    Buon giorno

    Ho il titolo del mio articolo ($title) che è composto come ogni titolo da parole , caratteri numeri esempio:
    "Il Sig.Mario Rossi, dichiara:domani piove"

    Per ricercare video , devo passare termini del TITOLO alle API YOUTUBE.
    Per questo devo estrarre NON TUTTO IL TITOLO ma solo le prime 3 parole, divise da "/", in questo caso (mario/rossi/dichiara) escludendo inoltre dalle parole che passo a Youtube, tutta una serie di termini che sono inutili per la ricerca tipo il, gli, lo, lei , lui , a, ........

    Con il codice di seguito, riesco a ripulire la stringa e dividere le parole con "/", però
    non so come recuperare solo le prime 3 parole del titolo ed escludere le parole inutili.

    $q = $title;
    $q = ereg_replace("[^A-Za-z0-9 ]", "", $q );
    $q = ereg_replace('[[:space:]]+', '/', trim($q));

    http://gdata.youtube.com/feeds/api/videos/-/{$q}?orderby=viewCount


    Potete aiutarmi ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Ti consiglio di usare le PCRE invece delle RegExp POSIX che sono deprecate.

    Comunque puoi, con uno str_replace fare una cosa del genere:

    $parole_inutili = array("il", "lo", "la", ecc ecc);
    $q = str_replace($parole_inutili, "", $q);
    $q = preg_replace("#/+#", "/", $q);

    L'array delle parole inutili te lo riempi con tutto quello che devi scartare. Lo str_replace cancellerà tutte le parole inutili e il preg_replace sistemerà eventuali duplicazioni di slash.

    Per prendere solo le prime 3 parole puoi fare:

    $q = explode("/", $q);
    $q = implode("/", array($q[0], $q[1], $q[2]));

    Leggiti un po' di roba su php.net, soprattutto riguardo alle PCRE (Perl-Compatible Regular Expression)


  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    58
    Originariamente inviato da simo22
    Ti consiglio di usare le PCRE invece delle RegExp POSIX che sono deprecate.

    Comunque puoi, con uno str_replace fare una cosa del genere:

    $parole_inutili = array("il", "lo", "la", ecc ecc);
    $q = str_replace($parole_inutili, "", $q);
    $q = preg_replace("#/+#", "/", $q);

    L'array delle parole inutili te lo riempi con tutto quello che devi scartare. Lo str_replace cancellerà tutte le parole inutili e il preg_replace sistemerà eventuali duplicazioni di slash.

    Per prendere solo le prime 3 parole puoi fare:

    $q = explode("/", $q);
    $q = implode("/", array($q[0], $q[1], $q[2]));

    Leggiti un po' di roba su php.net, soprattutto riguardo alle PCRE (Perl-Compatible Regular Expression)

    grazie seguirò il tuo consiglio

    Solo l'ultima cosa,
    Ho notato che usando
    $parole_inutili = array("il", "lo", "la", ecc ecc);
    Le parole inutili sono eliminate anche se contenute all'interno di altre parole ad esempio:

    "lo squalo" viene processato in "squa" in quanto contiene anche la parola inutile "lo".

    Si puo fare qualcosa

    Ciao e grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Giusto, non ci ho pensato...

    Aggiungi uno spazio dopo ogni parola inutile.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.