Visualizzazione risultati 1 fino 20 di 20

Discussione: Lunghezza massima stringhe

  1. #1
    Guest

    Predefinito Lunghezza massima stringhe

    Salve a tutti.

    Vorrei sapere quale sia la lunghezza massima di una stringa php

    grazie

  2. #2
    Guest

    Predefinito

    Il manuale non dice niente riguardo a questo, probabilmente il limite è definito dal limite di memoria dello script nel php.ini
    Comunque, per quanto tu possa usare PHP non avrai mai nessun problema di lunghezza massima delel stringhe ^^

  3. #3
    Guest

    Predefinito

    Anche se ci fosse un limite (in tutta sincerità cosa mai sentita prima d'ora), penso che per raggiungere tale limite dovresti avere a che fare con stringhe lunghe probabilmente svariati milioni (se non miliardi) di caratteri

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Citazione Originalmente inviato da comunitavirtuali Visualizza messaggio
    Il manuale non dice niente riguardo a questo
    Citazione Originalmente inviato da documentazione PHP -> tipi -> stringhe
    Note: It is no problem for a string to become very large. PHP imposes no boundary on the size of a string; the only limit is the available memory of the computer on which PHP is running.
    Ciao!

  5. #5
    Guest

    Predefinito

    si ma allora mi sorge un problema.

    io volevo salvare l'intero codice php di una pagina di circa 3KB in una stringa e poi scriverlo in output a schermo.

    solo che quando lo faccio, mi viene scritta a schermo solo la seconda parte della pagina (sarà circa il 60% di essa) e non tutta....come mai?

  6. #6
    Guest

    Predefinito

    Posta il codice che da problemi.


    Ciao!

  7. #7
    Guest

    Predefinito

    il codice che utilizzo per momorizzare nella stringa, oppure il codice memorizzato nella stringa?

  8. #8
    Guest

    Predefinito

    Tutti e due!

  9. #9
    Guest

    Predefinito

    ecco quello per la memorizzazione nella stringa. (parziale)
    prima faccio l'upload del file, e poi vado a scriverne il contenuto in una stringa

    Codice PHP:
    <?
    //percorso della cartella dove mettere i file caricati
    $uploaddir = '';

    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];

    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];

    print
    "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))
    {
    //Se l'operazione è andata a buon fine...
    print "File inviato con successo. Ecco alcune informazioni:\n";
    print_r($_FILES);
    print
    "\n";
    $contenuto = file_get_contents($userfile_name);
    echo
    $contenuto;
    .
    .
    .
    continua
    l'altro deve funzionare su un qualsiasi file .php uploadato (scusate il brutto termine)

  10. #10
    Guest

    Predefinito

    Magari il file caricato contiene dei caratteri che interrompono l'echo.


    Ciao!

  11. #11
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Non avevi specificato che la stringa era il contenuto di un file uppato...
    A questo punto il limite non è della lunghezza della stringa, ma della dimensione di upload dei file (upload_max_filesize) e/o di invio di dati post (post_max_size).
    Attualmente su AlterVista la prima direttiva è settata a 3M, a 4M la seconda (almeno sotto PHP5).
    Probabilmente nell'upload dei tuoi file superi questi limiti, e il file uppato viene tagliato.
    Puoi controllare che sia effettivamente così aprendo il file uppato manualmente.
    Dovresti vederlo tagliato, e ciò dimostrerebbe che non è la stringa in output ad essere troncata.
    Ciao!

  12. #12
    Guest

    Predefinito

    ma se io vado nel pannello di av, il file è stato caricato correttamente, senza nessun problema.

    Inoltre mi sembra strano che ci siano caratteri che interrompono l'echo, perchè si vede la seconda metà del contenuto del file nella stringa, non la prima

  13. #13
    Guest

    Predefinito

    Se non posti il file caricato non possiamo aiutarti.


    ciao!

  14. #14
    Guest

    Predefinito

    Prova ad utilizzare la funzione fread:

    Codice PHP:
    <?php
    $var
    =fopen("nome_file.ext","r");
    $leggi=fread($var,filesize("nome_file.txt"));
    fclose($var);
    echo
    $leggi;
    ?>

  15. #15
    Guest

    Predefinito

    e che differenza ci sarebbe?


    Ciao!

  16. #16
    Guest

    Predefinito

    :D l'output sarebbe lo stesso ma magari il sistema cambia ;)

    A volte può capitare che al posto di provare a risolvere un problema che pare insormontabile sia più facile testare altre funzioni ^^
    Ma aspettiamo il file che è meglio :D

  17. #17
    Guest

    Predefinito

    fopen la dovrei cmq usare perchè poi devo fare operazioni di scrittura sul file, quindi tanto vale che provo il code che mi avete fornito.

    se va a posto, sennò risentirete parlare di me (xD)

    Grazie

    EDIT: ho finalmente capito dove sta il problema.

    sta nel carattere
    Codice PHP:
    <?
    se levo all'inizio del file quella parte, il file viene memorizzato tutto correttamente, ma se non lo faccio viene memorizzato solo dopo un certo punto....

    come risolvo?

    grazie
    Ultima modifica di debug : 02-09-2008 alle ore 11.57.06

  18. #18
    Guest

    Predefinito

    Quello è il tag di inizio php, se lo inserisci, come già dicevo, l'echo che effettui sarà interpretato come php.
    Ripeto, posta il file che non viene stampato.


    Ciao!

  19. #19
    Guest

    Predefinito

    scusa per i post consecutivi...pensavo potessi in questo caso.

    devo leggere diversi file, ma in effetti solo 1 è in php.è un contatore eccolo:

    Codice PHP:
    <?

    // MODIFICARE PATH PARTS E COUNT FILENAME

    //
    // SET VARIABLES
    //

    // filename of hits count
    $count_filename = "counter.txt";

    // minimum number of digits to display
    $min_digits = 0; // set to 0 to display hits count as is

    // location of digit images
    $digits_location = "images/";

    // dimensions of digit images in pixels
    $digit_width = 15;
    $digit_height = 15;

    // variabili script 2
    $contatore_attivo = true; /* se impostato su true, tutto funziona correttamente, se impostato su false,BLOCCA tutti i contatori */
    $contatore_unico = true; /* valori possibili: true,false impostano se il contatore contera i visitatori unici o le visualizzazioni */
    $contatore_multi_pagina = false; /* se e impostata come true, ogni pagina avra un contatore per se stessa, altrimenti tutti il sito si basera su un contatore*/

    //
    // INCREMENT HITS COUNT
    //

    // non modificare nulla oltre questo punto
    if ($contatore_multi_pagina)
    {
    $path_parts = pathinfo($_SERVER['PHP_SELF']);
    $nome_file = $path_parts['filename'].'.c.php';
    } else
    {
    $nome_file= $count_filename;
    $path_parts['filename'] = 'counter';
    }

    function
    controlla_cookie($nome_cookie)
    {
    if (isset(
    $_COOKIE[$nome_cookie]) && time()>($_COOKIE[$nome_cookie]+3600))
    {
    setcookie($nome_cookie,time(),time()+3600);
    return
    true;
    } elseif (!isset(
    $_COOKIE[$nome_cookie]))
    {
    setcookie($nome_cookie,time(),time()+3600);
    return
    true;
    } else
    return
    false;
    }

    $warning = "";
    if (@!
    file_exists($nome_file) or @filesize($nome_file) == 0)
    {
    $handle = @fopen($nome_file,"w");
    if (
    $handle)
    {
    @
    fwrite($handle,'<?php|1|');
    @
    fclose($handle);
    $numero_visite = 1;
    } else {
    $warning = 'Impossibile Aprire il file in modalita scrittura. Controllare permessi';}
    } else
    {
    $contenuto = file_get_contents($nome_file);
    $arr = explode('|',$contenuto);
    if (
    $contatore_unico)
    {
    if (
    controlla_cookie($path_parts['filename'])) $somma = 1; else $somma = 0;
    } else
    $somma = 1;
    if (!
    $contatore_attivo) $somma = 0;
    $handle = @fopen($nome_file,"w");
    if (
    $handle)
    {
    $nuovo_numero = ($arr[1]+$somma);
    @
    fwrite($handle,"<?php|$nuovo_numero|");
    @
    fclose($handle);
    $numero_visite = $nuovo_numero;
    } else {
    $warning = 'Impossibile Aprire il file in modalita scrittura. Controllare permessi';}
    }

    function
    contatore($numero_visite,$warning)
    {
    if (!@isset(
    $warning) or @empty($warning))
    echo
    "$numero_visite";
    else
    echo
    "<a href=\"#\" onClick=\"alert('$warning')\">Errore</a>";
    }

    //
    // OUTPUT HITS COUNT AS A JPEG IMAGE
    //

    // get number of digits in hits count
    $no_digits = strlen($numero_visite);

    // use a minimum number of digits to display hits count if necessary
    if ($no_digits < $min_digits) {
    // get number of zeroes to append to hits count
    $no_zeroes = $min_digits - $no_digits;

    // append zeroes to hits count
    for ($i = 0; $i < $no_zeroes; $i++) {
    $numero_visite = "0" . $numero_visite;
    }

    // get new number of digits in hits count
    $no_digits = $min_digits;
    }

    // send headers for JPEG image
    header("Content-type: image/jpeg");

    // create hits count image
    $count_image = imagecreate($digit_width * $no_digits, $digit_height);

    // add digit images to hits count image
    for ($i = 0; $i < $no_digits; $i++) {
    // get digit in this part of hits count
    $digit = substr($numero_visite, $i, 1);

    // get image for this digit
    $digit_image = imagecreatefromjpeg($digits_location . $digit . ".jpg");

    // get x-coordinate for placing this digit in count image
    $x = $digit_width * $i;

    // place digit image within count image
    imagecopymerge($count_image, $digit_image, $x, 0, 0, 0, $digit_width, $digit_height, 100);
    }

    // output hits count image
    imagejpeg($count_image);

    ?>
    ora tu mi dici che l'echo interpreta il tutto come un qualcosa di php...ma allora io come faccio a sapere se la mia stringa contiene in effetti tutto il file?

    una possibilità sarebbe quella di salvare i 2 tag di inizio e fine in 2 stringhe e tutto il corpo del file in una terza....poi effettuo ciò che mi serve su quest'ultima e alla fine rischrivo il file inserendo le 3 stringhe.Giusto?

  20. #20
    Guest

    Predefinito

    No, dovresti backslashare tutti i caratteri "speciali", come il simbolo del dollaro, i single e double quote (apostrofi e virgolette)...

    Oppure puoi usare highlight_string o highlight_file


    Ciao!

Regole di scrittura

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