Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: [PHP] str_replace

  1. #1

    [PHP] str_replace

    'giorno a tutti,

    ho un problemino

    se io ho :

    codice:
    $keys = explode(',',$_REQUEST['ck']);
    quindi ottengo un array composto dai valori contenuti in $_REQUEST['ck'] suddivisi dal carattere ","

    ora con uno str_replace vorrei mettere in bold le parole contenute in $keys in una data stringa di testo....

    es.

    codice:
    $row['campo_1'] = str_replace($keys, "".$keys."", $row['campo_1']);
    ma mi restituisce Array in bold

    come posso risolvere ?

    Grazie

  2. #2
    perchè $keys è un array. Per accedere ai suoi elementi devi ciclare...

  3. #3
    Originariamente inviato da robydrupo
    perchè $keys è un array. Per accedere ai suoi elementi devi ciclare...
    non in str_replace

    http://it2.php.net/manual/it/function.str-replace.php

    se faccio

    codice:
    $keys = explode(',',$_REQUEST['ck']);
    $keys_b = array('pippo','pluto','paperino');
    
    $row['campo_1'] = str_replace($keys, $keys_b, $row['campo_1']);
    sostituisce perfettamente

    se invece faccio così

    codice:
    $keys = explode(',',$_REQUEST['ck']);
    $keys_b = explode(',',"".$_REQUEST['ck']."");
    
    
    $row['campo_1'] = str_replace($keys, $keys_b, $row['campo_1']);
    funziona, ma non proprio come dovrebbe

  4. #4
    hai ragione ho detto una caxxata.

    però facendo così:

    Codice PHP:
    $keys_b explode(',',"[b]".$_REQUEST['ck']."[/b]"); 
    la stringa così fatta sarebbe una cosa del genere:
    valore_1,valore_2,,valore_n

    e quindi taglia dopo la virgola e ti stacca [/b] e ti mette per la prima voce e poi lo aggiunge all'ultimo valore giusto?

    nn vorrei dire un'altra caxxata però...

  5. #5
    Originariamente inviato da robydrupo
    hai ragione ho detto una caxxata.

    però facendo così:

    Codice PHP:
    $keys_b explode(',',"[b]".$_REQUEST['ck']."[/b]"); 
    la stringa così fatta sarebbe una cosa del genere:
    valore_1,valore_2,,valore_n

    e quindi taglia dopo la virgola e ti stacca [/b] e ti mette per la prima voce e poi lo aggiunge all'ultimo valore giusto?

    nn vorrei dire un'altra caxxata però...
    diciamo di si

    il problema è proprio li

    il confronto funziona, se la parola è singola se sono + parole viene tutta la stringa in bold proprio perchè il tag non viene chiuso

    morale

    se metto

    $keys_b = explode(',',"".$_REQUEST['ck']."");

    ho il problema appena menzionato

    se invece metto una cosa del genere

    $keys = explode(',',$_REQUEST['ck']);
    $keys_b = explode(',',$_REQUEST['ck']);


    $row['campo_1'] = str_replace($keys, "<span style=\"font-weight:bold;\">$keys_b</span>", $row['campo_1']);

    mi stampa Array

    e non sò come uscirne



  6. #6
    non puoi usare
    Codice PHP:
    $keys explode(',',$_REQUEST['ck']); 
    $stringa '';
    foreach(
    $keys as $key){
     
    $stringa .= "[b]".$key."[/b]";


  7. #7
    Devi ciclare l'array $keys e per ogni valore eseguire str_replace.

  8. #8
    Originariamente inviato da mircov
    Devi ciclare l'array $keys e per ogni valore eseguire str_replace.
    un esempio pratico, che sto fondendo

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Si puo' fare senza ciclo....

    codice:
    <? 
    $miaLista1 = 'a,b,c,d,e,f,g,s,do';
    // uso ### per evitare che la string strong non venga rimpiazzata nel caso in cui si cerca "st","str","stro", etc...
    $miaLista2 = "<###>".str_replace(",","</###>,<###>",$miaLista1)."</###>";
    $mioArray1 = explode(',',$miaLista1);
    $mioArray2 = explode(',',$miaLista2);
    
    $mioTesto  = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eius mod tempor incididunt ut labore et dolore magna aliqua";
    $mioTesto  = str_replace("###","strong",str_replace($mioArray1,$mioArray2,$mioTesto));
    print $mioTesto;
    
    ?>

  10. #10
    risolto così..

    codice:
    $keys = explode(',',$_REQUEST['ck']);
    $keys_a = explode(',',$_REQUEST['ck']);
    
    $cicli=count($keys_a);
    
    
    for($i=0;$i<$cicli;$i++){
    $keys_a[$i]="".$keys_a[$i]."";
    }
    
    
    $row['campo_1'] = str_replace($keys, $keys_a, $row['campo_1']);
    adesso pulisco

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.