Pagina 2 di 4 PrimoPrimo 1234 UltimoUltimo
Visualizzazione risultati 31 fino 60 di 105

Discussione: [php] parole cercate di colore diverso

  1. #31
    Guest

    Predefinito

    ok graz...

  2. #32
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Il problema è str_replace;
    quando inseriamo (tipo casa+a)
    Codice:
    foreach($array as $word){
    $colore = generacolore();
    $cerca["text"] = str_replace($word, "<span style=\"background: {$colore}\">{$word}</span>", $cerca["text"]);
    }
    in questo ciclo prima $word=casa e str_replace sostituisce casa con <span style=\"background: {$colore}\">casa</span>
    dopo $word=a e str_replace non fa caso se il carattere trovato è da solo o se fa parte di una stringa; perciò la prima "a" che incontra anche che fa parte di una stringa la sostituisce con <span style=\"background: {$colore}\">a</span>, in questo caso la prima "a" che incontra è quella dello span <span style=\"background: {$colore}\">a</span>
    e la sostituisce <sp<span style=\"background: {$colore}\">a</span>n style=\"background: {$colore}\">a</span>
    mi sono spiegato bene?

  3. #33
    Guest

    Predefinito

    credo di si...
    per risolvere questo problema che devo fare...
    come hai detto tu prima mi dava errore...

  4. #34
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Io l'ho risolto così, devi sostituire questo:
    Codice PHP:
    $array = array();
    $tok = strtok($parola, " ");
    while(
    $tok !== false){
    array_push($array, $tok);
    $tok = strtok(" ");
    }
    con questo:
    Codice PHP:
    $array = array();
    $tok = strtok($parola, " ");
    while(
    $tok !== false){
    if(
    strlen($tok) == 1)
    array_push($array, ' '.$tok.' ');
    else
    array_push($array, $tok);
    $tok = strtok(" ");
    }
    vedi se per te va bene.

  5. #35
    Guest

    Predefinito

    ehehe funziona almeno per ora...
    ma ci sono alcune cose che devo sistemare...

    1)dovrei fare tipo se mette una sola lettera compaia un messaggio tipo alert e la pagina rimane quella di prima del invio
    2)dovrei fare tipo scrivi cia
    lui ti trova gia la parola ciao sensa che tu la scrivi tutta la parola ciao o applicare Levenshtein
    per suggerire dei risultati in caso la parola non si trovi che ne pensi
    3)dovrei escludere dai risultati tutto quello che si trova prima di [ e finisca con ]
    tipo
    [co de]ciao[/co de]
    non deve comparire [co de]ciao[/co de]

  6. #36
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    1)così:
    Codice PHP:
    <script type="text/javascript">
    //<![CDATA[
    function controll(form){
    var name = form.parola.value;
    if(name == null || name == '' || trim(name) == '' || strlen(name) == 1){
    alert("..........");
    return false;
    }
    return true;
    }
    function trim(str){
    if(str != null){
    while(str.substring(0, 1) == ' '){
    str = str.substring(1, str.length);
    }
    while(str.substring(str.length - 1, str.length) == ' '){
    str = str.substring(0, str.length - 1);
    }
    }
    return str;
    }
    function strlen (string) {
    // Get string length
    //
    // version: 909.322
    // discuss at: http://phpjs.org/functions/strlen
    // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // + improved by: Sakimori
    // + input by: Kirk Strobeck
    // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // + bugfixed by: Onno Marsman
    // + revised by: Brett Zamir (http://brett-zamir.me)
    // % note 1: May look like overkill, but in order to be truly faithful to handling all Unicode
    // % note 1: characters and to this function in PHP which does not count the number of bytes
    // % note 1: but counts the number of characters, something like this is really necessary.
    // * example 1: strlen('Kevin van Zonneveld');
    // * returns 1: 19
    // * example 2: strlen('A\ud87e\udc04Z');
    // * returns 2: 3
    var str = string+'';
    var i = 0, chr = '', lgth = 0;

    var getWholeChar = function (str, i) {
    var code = str.charCodeAt(i);
    var next = '', prev = '';
    if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB7F to treat high private surrogates as single characters)
    if (str.length <= (i+1)) {
    throw 'High surrogate without following low surrogate';
    }
    next = str.charCodeAt(i+1);
    if (0xDC00 > next || next > 0xDFFF) {
    throw 'High surrogate without following low surrogate';
    }
    return str.charAt(i)+str.charAt(i+1);
    } else if (0xDC00 <= code && code <= 0xDFFF) { // Low surrogate
    if (i === 0) {
    throw 'Low surrogate without preceding high surrogate';
    }
    prev = str.charCodeAt(i-1);
    if (0xD800 > prev || prev > 0xDBFF) { //(could change last hex to 0xDB7F to treat high private surrogates as single characters)
    throw 'Low surrogate without preceding high surrogate';
    }
    return false; // We can pass over low surrogates now as the second component in a pair which we have already processed
    }
    return str.charAt(i);
    };

    for (i=0, lgth=0; i < str.length; i++) {
    if ((chr = getWholeChar(str, i)) === false) {
    continue;
    } // Adapt this line at the top of any loop, passing in the whole string and the current iteration and returning a variable to represent the individual character; purpose is to treat the first part of a surrogate pair as the whole character and then ignore the second part
    lgth++;
    }
    return lgth;
    }
    //]]>
    </script>
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get" onsubmit="return controll(this);">
    <input type="text" name="parola">
    <input type="submit" value="INVIA">
    </form>
    3)Cosa devi fare? Vuoi eliminare da una stringa [co de]ciao[/co de]?

  7. #37
    Guest

    Predefinito

    1)mi sono accorto se scrivo
    ciao a
    mi compare una pagina bianca per questo voglio che avverti anche con echo in php che non bisogna inserire piu di una lettera...

    3)si sai come posso fare

  8. #38
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    C'è qualcosa che non funziona!
    Quando inserisco "ciao+a" funziona, invece quando inserisci "ciao a" non funziona;
    forse hai modificato male lo script che ho scritto.

  9. #39
    Guest

    Predefinito

    Codice PHP:
    <?php
    $parola
    = mysql_real_escape_string($_GET["parola"]);

    if(isset(
    $parola)){
    $mysql = @mysql_connect('localhost', 'zappi', '');
    mysql_select_db('my_zappi', $mysql);
    $query = mysql_query("SELECT *, MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) as score FROM tabella WHERE MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) ORDER BY score DESC");

    $array = array();
    $tok = strtok($parola, " ");
    while(
    $tok !== false){
    if(
    strlen($tok) == 1){
    array_push($array, ' '.$tok.' ');
    }else{
    array_push($array, $tok);
    $tok = strtok(" ");
    }}

    echo
    "<div class=\"titolo_cerca\">Risultati ricerca: " .$parola. "</div><br><br>\n";
    echo
    "<div class=\"titolo_post\">Blog</div>\n";
    echo
    "<table width=\"600\" border=\"0\" align=\"center\">";

    while(
    $cerca = mysql_fetch_array($query)){
    foreach(
    $array as $word){
    $colore = generacolore();
    $cerca["testo"] = str_replace($word, "\n<span style=\"background: {$colore}\">{$word}</span>\n", $cerca["testo"] );
    }
    echo
    "
    <tr>
    <td class=\"titolo_post\">\n"
    .$cerca["titolo"]. "\n</td>
    </tr>
    <tr>
    <td>Postato in [Blog] da il 06/09/2009</td>
    </tr>
    <tr>
    <td class=\"testo\">\n"
    .$cerca["testo"]."\n</td>
    </tr>\n"
    ;
    }}


    echo
    "
    </table>"
    ;

    function
    generacolore(){
    return
    '#'.dechex(rand(0, 16777215));
    }
    ?>

  10. #40
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Non so sembra giusto però non funziona.
    Ultima modifica di andreafallico : 12-10-2009 alle ore 19.13.23

  11. #41
    Guest

    Predefinito

    hehehe...

    vediamo posta il tuo...

    per trovare problemi negli script sono il numero uno ^^
    Ultima modifica di zappi : 12-10-2009 alle ore 19.35.08

  12. #42
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Il mio:
    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get">
    <input type="text" name="parola">
    <input type="submit" value="INVIA">
    </form>
    <?php
    $parola
    = mysql_real_escape_string($_GET["parola"]);

    if(isset(
    $parola)){

    $mysql = @mysql_connect('', '', '');
    if(
    $mysql == FALSE)
    exit();
    @
    mysql_select_db('', $mysql);

    $query = mysql_query("SELECT *, MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) as score FROM tabella WHERE MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) ORDER BY score DESC");
    $array = array();
    $tok = strtok($parola, " ");

    while(
    $tok !== false){
    if(
    strlen($tok) == 1)
    array_push($array, ' '.$tok.' ');
    else
    array_push($array, $tok);
    $tok = strtok(" ");
    }


    echo
    "<div class=\"titolo_cerca\">Risultati ricerca: " .$parola. "</div><br><br>\n\n\n";
    echo
    "<table width=\"200\" border=\"0\" align=\"center\">";

    while(
    $cerca = mysql_fetch_array($query)){
    foreach(
    $array as $word){
    $colore = generacolore();
    $cerca["testo"] = str_replace($word, "<span style=\"background: {$colore}\">{$word}</span>", $cerca["testo"]);
    }
    echo
    "\n<tr><td class=\"titolo_post\">\n" .$cerca["titolo"]. "\n</td></tr>
    <tr><td class=\"testo\">\n"
    .$cerca["testo"]. "<br>\n</td></tr>\n\n";
    }}


    echo
    "
    </table>"
    ;

    function
    generacolore(){
    return
    '#'.dechex(rand(0, 16777215));
    }
    ?>
    Ora senza che modifichi niente, devi fare un copia e incolla, devi aggiungere solo i tuoi dati e poi metti il link alla pagina con questo codice.Capito?


    Il tuo restituisce questo errore:
    Codice:
    Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 35 bytes) in /membri/zappi/cerca.php on line 48

  13. #43
    Guest

    Predefinito

    ho fatto cosi e funziona...

    se voi prova...^^

    p.s.
    per le modifiche che ti ho detto prima
    come posso fare....
    Codice PHP:
    <?php
    $parola
    = mysql_real_escape_string($_GET["parola"]);

    if(isset(
    $parola)){
    $mysql = @mysql_connect('localhost', 'zappi', '');

    if(
    $mysql == FALSE)
    exit();
    @
    mysql_select_db('my_zappi', $mysql);
    $query = mysql_query("SELECT *, MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) as score FROM blog WHERE MATCH(testo) AGAINST('+$parola' IN BOOLEAN MODE) ORDER BY score DESC");

    $array = array();
    $tok = strtok($parola, " ");
    while(
    $tok !== false){
    if(
    strlen($tok) == 1)
    array_push($array, ' '.$tok.' ');
    else
    array_push($array, $tok);
    $tok = strtok(" ");
    }

    echo
    "<div class=\"titolo_cerca\">Risultati ricerca: " .$parola. "</div><br><br>\n";
    echo
    "<div class=\"titolo_post\">Blog</div>\n";
    echo
    "<table width=\"600\" border=\"0\" align=\"center\">";

    while(
    $cerca = mysql_fetch_array($query)){
    foreach(
    $array as $word){
    $colore = generacolore();
    $cerca["testo"] = str_replace($word, "\n<span style=\"background: {$colore}\">{$word}</span>\n", $cerca["testo"] );
    }
    echo
    "
    <tr>
    <td class=\"titolo_post\">\n"
    .$cerca["titolo"]. "\n</td>
    </tr>
    <tr>
    <td>Postato in [Blog] da il 06/09/2009</td>
    </tr>
    <tr>
    <td class=\"testo\">\n"
    .$cerca["testo"]."\n</td>
    </tr>\n"
    ;
    }}


    echo
    "
    </table>"
    ;

    function
    generacolore(){
    return
    '#'.dechex(rand(0, 16777215));
    }
    ?>

  14. #44
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Però il problema che ti avevo spiegato prima con str_replace rimane, fai una prova e nel tuo inserisci "ciao ci" guarda il risultato.
    Quindi secondo me con str_replace non è fattibile la cosa; puoi utilizzare jquery.

  15. #45
    Guest

    Predefinito

    2)dovrei fare tipo scrivi cia
    lui ti trova gia la parola ciao sensa che tu la scrivi tutta la parola ciao o applicare Levenshtein
    per suggerire dei risultati in caso la parola non si trovi che ne pensi
    3)dovrei escludere dai risultati tutto quello che si trova prima di [ e finisca con ]
    tipo
    [co de]ciao[/co de]
    non deve comparire [co de]ciao[/co de]

  16. #46
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    2)Per Levenshtein puoi guardare: qui.
    3)Penso che si dovrebbe usare str_replace con una espressione regolare fatta per quello che vuoi tu.

  17. #47
    Guest

    Predefinito

    cosi dici
    $cerca["testo"] = str_replace([co de]$word[/co de], "", $cerca["testo"]);

  18. #48
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Citazione Originalmente inviato da zappi Visualizza messaggio
    cosi dici
    Codice PHP:
    $cerca["testo"] = str_replace([co de]$word[/co de], "", $cerca["testo"]);
    Fai delle prove e vedi se funziona.
    Però questo non viene cancellato
    [co de]<?php echo " ciao "; ?>[/co de]
    Ultima modifica di andreafallico : 12-10-2009 alle ore 20.28.07

  19. #49
    Guest

    Predefinito

    $cerca["testo"] = str_replace("[co de]", "", $cerca["testo"]);
    $cerca["testo"] = str_replace("[/co de]", "", $cerca["testo"]);
    funziona ma non riesco a levare quello che sta al interno dfella tag code /code

  20. #50
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Ma non dovrebbe essere tra virgolette?
    Codice PHP:
    $cerca["testo"] = str_replace("[code]$word[/code]", "", $cerca["testo"]);
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  21. #51
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Codice PHP:
    $cerca["testo"] = preg_replace("/\[code\](.*?)\[\/code\]/is", "", $cerca["testo"]);
    Tutto quello racchiuso fra [CO DE][/CO DE] e [co de] [/co de] verrà cancellato.

  22. #52
    Guest

    Predefinito

    grazie carlo...

    1)fa la distinzione tra minuscole e maiuscole e vorrei che non le facesse...
    non si puo fare vero...
    2)e possibile fare che inserendo solo la lettera a o scrivere ci
    ti trova tutti i post che hanno queste lettere invece di fare di trovare i post solo che con incidono solo con le frasi...

    ^^

  23. #53
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    1)
    Codice PHP:
    $cerca["testo"] = preg_replace("/\[code\](.*?)\[\/code\]/s", "", $cerca["testo"]);
    2)Se ho capito bene:

    Codice PHP:
    $q = "a";
    $post_match = array();

    foreach(
    $_POST as $key => $value) {
    if(
    preg_match("/" . $q . "/", $value)) {
    $post_match[$key] = $value;
    }
    }
    E usi $post_match, che avrà soltanto i dati che contengono a!

    Saluti!

  24. #54
    Guest

    Predefinito

    no io dico questa parte
    Codice PHP:
    $cerca["testo"] = str_replace($word, "\n<span style=\"background: {$colore}\">{$word}</span>\n", $cerca["testo"] );
    dove lo devo mettere di preciso io dico se per esempio scrivo ci
    già lui la trova lafrase che e ciao...
    $q = "a";
    $post_match = array();

    foreach($_POST as $key => $value) {
    if(preg_match("/" . $q . "/", $value)) {
    $post_match[$key] = $value;
    }
    }

  25. #55
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Citazione Originalmente inviato da zappi Visualizza messaggio
    no io dico questa parte
    Codice PHP:
    $cerca["testo"] = str_replace($word, "\n<span style=\"background: {$colore}\">{$word}</span>\n", $cerca["testo"] );
    Non ho capito!

    Citazione Originalmente inviato da zappi Visualizza messaggio
    dove lo devo mettere di preciso io dico se per esempio scrivo ci
    già lui la trova lafrase che e ciao...
    Quel codice possibilimente a inizio pagina!
    Ti spiego il funzionamento di quel codice.

    Con il loop foreach ottiene ogni chiave e valore dall'array post con la funzione controllo se nel valore c'è il contenuto della variabile $q, se c'è nell'array $post_macth, avrai tutti i dati che hanno "a" nel loro valore altrimenti non verrà inserito.

  26. #56
    Guest

    Predefinito

    1) dico se io scrivo
    ciao e diverso da Ciao o CIAO ho come altro e scritto
    vorrei che non succedesse...

    2)non ho capito bene
    funziona solo con a e basta

    io vorrei fare se scrivi cia o ci
    lui trova gia la parola che e ciao o altra parola che si avvicina...^^

  27. #57
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    1) Lì è colpa di mysql non so come si imposta case insensitive!
    2) In post_match hai dati filtrati. Comunque per le parole (tipo google) ti serve calcolare la distanza di levenshtein

  28. #58
    Guest

    Predefinito

    1)pensi che non si possa sistemare...
    2)no per ora non mi serve la distanza di leve...
    ma un modo per migliorare la ricerca dei dati...
    io vorrei fare se scrivi cia o ci
    lui trova gia la parola che e ciao o altra parola che si avvicina...^^
    e che gia lo fa vedere ciao...

  29. #59
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    2)Come ti avevo detto sopra devi utilizzare Levenshtein;
    Guarda la demo

  30. #60
    Guest

    Predefinito

    si ma quello usa dei file di testo...
    in pm ti invio link di un sito
    asp cosi capisci...^^

Pagina 2 di 4 PrimoPrimo 1234 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •