Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159

    sistema di tag twitter like

    Salve ragazzi, so facendo un sistema di tag nel mio sito, simile a twitter diciamo, funziona anteponendo # al nome e cognome scritto tutto minuscolo e senza spazi. Ora il mio problema è questo, con il metodo in basso riesco a ciclare praticamente tutti i tag nei post, solo che non funziona bene se io taggo persone in ordine diverso da quello del db, nel senso, se io taggo una persona che ha id 2 nel db users non me la riconosce, mentre se metto quella che si trova nella posizione 1, poi 2 ecc allora funziona, come posso correggere? Grazie!

    Codice PHP:
    public function GetTag ($text) { 
    $matches = array(); 
    $replacements = array(); 
    preg_match_all('/#([^\s]+)/'$text$matches); 
    $this->DBConnect(); 
    $sql mysql_query("SELECT * FROM users"); 
    $e 0
    while (
    $rows mysql_fetch_array($sql)) { 
        for (
    $j 0$c count($matches[1]); $j $c$j++) { 
            
    $just_str false
            
    $str strtolower(str_replace(' '''$this->GetNameSurname($rows['id']))); 
            if (
    $str == $matches[1][$j]) { 
                
    $replacements[$j][$e] = "[url='profile.php?user=".$rows[']".$this->GetNameSurname($rows['id'])."[/url]";
            } else { 
                $replacements[$j][$e] = "<span>".$matches[1][$j]."</span>"; 
            } 
         } 
         $e++; 

    for ($j = 0, $c = count($matches[1]), $e=0; $j < $c; $j++, $e++)
        $text = str_replace($matches[1][$j], $replacements[$j][$e], $text); 
    return $text; 

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159
    Ho corretto così, ma in pratica mi riconosce i tag, ma non mette il relativo link al profilo:

    Codice PHP:
    public function GetTag ($text) {
            
    $matches = array();
              
    $replacements = array();
              
    preg_match_all('/#([^\s]+)/'$text$matches);
            
            
    $this->DBConnect();
            
    $sql mysql_query("SELECT * FROM users");
            while (
    $rows mysql_fetch_array($sql)) {
                for (
    $j 0$c count($matches[1]); $j $c$j++) {
                    
    $str strtolower(str_replace(' '''$this->GetNameSurname($rows['id'])));
                    if (
    $str == $matches[1][$j]) {
                        
    $replacements[$j] = "[url='profile.php?user=".$rows[']".$this->GetNameSurname($rows['id'])."[/url]";
                    } else {
                        $replacements[$j] = $matches[1][$j];
                    }
                }
            }
            for ($j = 0, $c = count($matches[1]); $j < $c; $j++)
                $text = str_replace($matches[1][$j], $replacements[$j], $text);

              return $text;
            
        } 

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159
    UP!

  4. #4
    la domanda non è molto chiara, prova a riformularla magari spiegando attraverso commenti nel codice, altrimenti non si capisce la tua richiesta
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    159
    Si scusami, ma sono scarso con le spiegazioni
    Allora il codice fa questo, prende il testo passato come argomento, lo parsa inserendo dentro l'array $matches tutte occorrenze che trova con le regex, in questo caso va alla ricerca di parole precedute da #, mettiamo ad esempio che io abbia scritto #mariorossi. A questo punto controlla con il for se la parola in questione, mariorossi, è un nome presente nel db, in cui si vede che prendo nome e cognome con un'altro metodo, tolgo gli spazi e metto tutto minuscolo. Nel caso in cui il nome è presente nel db allora mette dentro $replacements[$j] il link da sostituire alla parola, questo avviene nell'ultimo for.
    Il problema è questo, fa tutto alla grande, solo che mi da problemi quando va a sostituire le parole con gli eventuali link, cioè non tutti i link vengono sostituiti, alcuni si e alcuni no. Da premettere anche il fatto che mando delle notifiche nel caso in cui si viene taggati, e le notifiche arrivano, solo che non sostituisce bene i link, sono giorni che ma non trovo il problema!

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.