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

Discussione: preg_replace testo

  1. #1

    preg_replace testo

    Salve a tutti/e,

    nonostante la guida, mi sto rompendo il capo con le espressioni regolari!
    Non riesco a mettere l'ora in questa striga $str="Il treno è partito alle ore 15:41 da Roma" in tag .

    Ho usato:
    Codice PHP:
    $str preg_replace(' ([0-9\:0-9]) ''[b][/b]'$str); 
    Ma ovviamente mi mangia il contenuto e lascia i tag vuoti.

    Cosa devo cambiare?

    Grazie infinite!
    En la habana hay una pila 'e locos!

  2. #2
    Codice PHP:
    <?php 
    $str 
    'Il treno è partito alle ore 15:41 da Roma';
    $str preg_replace('#([0-9]+:[0-9]+)#''[b]$1[/b]'$str);
    echo(
    $str);
    ?>

  3. #3
    Uhm...
    ho fatto una prova per capire se avevo capito ma il risultato non è stato eccellente:
    Codice PHP:
    $str preg_replace('#([0-9][0-9])+:\([0-9][0-9]+)#''<ora>$1</ora>:<minuti>$2</minuti>',$str); 
    ...così funziona se l'ora è 15:40, ma se nello stesso testo mettessi in un'altra frase anche '1:20'...???
    En la habana hay una pila 'e locos!

  4. #4
    codice:
    <?php
    
    $str = "...così funziona se l'ora è 0:40, ma se nello stesso testo mettessi in un'altra frase anche '1:20'...???";
    
    $str = preg_replace('#\b((?:[01]?[0-9]|2[0-3])):([0-5][0-9])\b#',
                        '<ore>$1</ore>:<minuti>$2</minuti>',
                        $str);
    
    echo $str;

  5. #5
    Sono riuscito dopo qualche tentativo a risolvere così:
    Codice PHP:
    #\b((?:[0-9]?[0-9]|2[0-9]?[0-9])):\([0-9]?[0-9])\b# 
    Grazie per l'aiuto!

    E se volessi racchiudere il testo dopo i minuti tra i tag <testo> </testo>, come dovrei fare?
    Non mi è del tutto chiaro il meccanismo.... qualcuno mi aiuta a capire, per la prossima volta?

    Sulle guide non è molto chiaro! almeno per me!
    En la habana hay una pila 'e locos!

  6. #6
    Hm avevo cercato di scrivere la regexp in modo che intervenisse solo sugli orari validi, in quali casi falliva?

  7. #7
    Avevo altri numeri, tipo 60:10 e 1:20 e non funzionava.
    Ma come posso racchiudere il seguente testo tra i tag <testo> </testo> ?
    En la habana hay una pila 'e locos!

  8. #8
    In pratica, da manuale non si capisce affatto, come posso fare a formattare un testo come questo: "1 1 Primo frase. 1 2 Seconda frase...... 10 23 Dodicesima frase." e renderlo così:

    <capitolo>1</capitolo> <verso>1</verso> <testo>Primo frase.</testo>
    <capitolo>1</capitolo> <verso>2</verso> <testo>Seconda frase.</testo>
    <capitolo>10</capitolo> <verso>23</verso> <testo>Dodicesima frase.</testo>

    Da un testo così vorrei infatti creare un xml. Si può fare? Ma come faccio a fargli capire in automatico che il primo o i primi due numeri siano il capitolo, il secondo o i secondi i versi e il resto testo??

    Grazie!
    En la habana hay una pila 'e locos!

  9. #9
    Ok, sono riuscito a fare qualcosa ma non è ancora perfetto, infatti mi racchiude solo la prima parola in <testo> </testo>:
    Codice PHP:
    $str "1 1 Primo frase. 1 2 Seconda frase...... 10 23 Dodicesima frase."
    $pattern '/(\d+) (\d+) (\w[A-Za-z]*)/';
    $replacement '<capitolo>$1</capitolo> <verso>$2</verso> <testo>$3</testo>';
    $str preg_replace($pattern$replacement$str); 
    Come posso miglioraro??
    PLEASE HELP!
    En la habana hay una pila 'e locos!

  10. #10
    codice:
    <?php
    
    $str = '1 1 Primo frase. 1 2 Seconda frase. 10 23 Dodicesima frase.';
    
    $arr = preg_split('#\s*(\d+) (\d+)\s*#', $str, NULL, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
    
    for ($x = 0; $x < count($arr); $x += 3) {
    	echo "<capitolo>{$arr[$x]}</capitolo>";
    	echo "<verso>{$arr[$x + 1]}</verso>";
    	echo "<testo>{$arr[$x + 2]}</testo>\n";
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.