Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227

    Lunghezza stringa sfasata

    Ciao a tutti ragazzi
    Piccolo problema:

    Codice PHP:
    $string "{DATE: 2013-11-03}";
    $string preg_replace("/({DATE: )([0-9\-\:\ ]+?)(})/i",strlen(trim("\\2")),$string); 
    Dovrebbe tornare 10, ovvero la lunghezza della data, e invece torna sempre 2, anche se camio "\\2" con "\\0"

    Qualche idea?

    Thinker

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Scusa, ma questo

    strlen(trim("\2")

    che dovrebbe fare secondo te?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Ho notato, è il forum che per qualche strano motivo non mi fa mettere il doppio \\
    Dovrebbe essere circa così

    codice:
    $string = preg_replace("/({DATE: )([0-9\-\:\ ]+?)(})/i",strlen(trim("\\2")), $string;

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Stessa cosa, questo

    strlen(trim("\\2"))

    secondo la tua teoria, cosa dovrebbe fare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Teoricamente dovrebbe ritornare la lunghezza della data strlen("2013-11-03") (sii buono, non sono un granchè con le espressioni regolari)

    Sto provando anche qualcosa come

    codice:
    $string = preg_replace("/({DATE: )([0-9]{4})-([0-9]{2})-([0-9]{2})(})/i", strlen("$2-$3-$4"),$string);
    ma torna 8, come se non contasse "-"

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Questo
    strlen(trim("\\2"))

    non ritorna la lunghezza della data, ma la lunghezza della stringa \\2

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Ma la lunghezza di "\\2" non dovrebbe comunque essere 3?

    Codice PHP:
    $string preg_replace("/({DATE: )([0-9]{4})-([0-9]{2})-([0-9]{2})(})/i"strlen(" $2-$3-$4 "),$string); 
    Così funziona, ma è corretto mettere i due spazi all'interno?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Evidendemente il primo \ viene interpretato come carattere di escape.

    Anche questo è sbagliato
    strlen(" $2-$3-$4 ")

    ti dice 10 perché 10 è esattamente la lunghezza della stringa " $2-$3-$4 "
    quelle lì dentro non sono interpretate come variabili, ma come semplici caratteri, per questo per far tornare la lunghezza giusta devi metterci gli spazi.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    uhm, il fatto è che di fatto torna i valori giusti se tolgo lo strlen()
    Altrimenti come dovrebbe essere il codice corretto?

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.