Salve a tutti.
Vorrei sapere quale sia la lunghezza massima di una stringa php
grazie
Salve a tutti.
Vorrei sapere quale sia la lunghezza massima di una stringa php
grazie
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 ^^
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
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?
Posta il codice che da problemi.
Ciao!
il codice che utilizzo per momorizzare nella stringa, oppure il codice memorizzato nella stringa?
Tutti e due!
ecco quello per la memorizzazione nella stringa. (parziale)
prima faccio l'upload del file, e poi vado a scriverne il contenuto in una stringa
l'altro deve funzionare su un qualsiasi file .php uploadato (scusate il brutto termine)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
Magari il file caricato contiene dei caratteri che interrompono l'echo.
Ciao!
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!
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
Se non posti il file caricato non possiamo aiutarti.
ciao!
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;
?>
e che differenza ci sarebbe?
Ciao!
: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
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 caratterese 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....Codice PHP:
<?
come risolvo?
grazie
Ultima modifica di debug : 02-09-2008 alle ore 11.57.06
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!
scusa per i post consecutivi...pensavo potessi in questo caso.
devo leggere diversi file, ma in effetti solo 1 è in php.è un contatore eccolo:
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?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);
?>
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?
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!