Newsgroup: it.comp.www.php
Titolo: come "accorgersi" se una stringa e' la path a un file?

salve a tutti,
sapete se c'e' un sistema abbastanza "intelligente" per sapere se una 
variabile contiene una path a un file?
chiedo questo perche' la prima idea che ho avuto e' di creare un enorme 
array con quante piu' estensioni possibili ma, per ovvi motivi, e' una 
sorta di suicidio.
dopo di che' confrontare ogni elemento dell'array con la "probabile" 
estensione del "probabile" file.
un'altra idea era quella di tentare di aprire il file che ha quella path 
e verificare :
- se esiste
- se e' un file (fatta eccezione per i file piu' comuni usati per il 
web: htm, html, gif, jpg, png)
- altro che non mi viene in mente
che fare?
-- 
sp-
courrier électronique:
[spintop _ chez _ virgilio _ point _ it]

variabile contiene una path a un file?
Dal Verbo secondo Eric S. Raymond:
	Spiegaci COSA vuoi fare, non il COME
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

 	Spiegaci COSA vuoi fare, non il COME
ok, te la sei cercata ;)
allora ho una tabella mysql con X campi.
devo stampare a video i valori dei campi.
c'e' la possibilita' che uno o piu' campi contengano la path a un file.
durante la stampa a video vorrei sostituire la path del file con 
un'iconcina che linka per l'appunto a tale file.
ma non so a priori SE si tratta della path a un file, ne' conosco 
l'eventuale estensione di tale - ipotetico - file.
inoltre, il file potrebbe essere rappresentato da una path assoluta o 
relativa, ma anche questo non posso saperlo a priori.


 relativa, ma anche questo non posso saperlo a priori.
起O
Uhm... dai una occhiata a file_exists(), direi che non ti serve altro.....

 Uhm... dai una occhiata a file_exists(), direi che non ti serve altro.....
ok.
a dire il vero avevo pensato ad un'alternativa, che non riguarderebbe 
solo il discorso del "file", ma mi farebbe estremamente comodo per altre 
cose.
ovvero scrivere nei commenti del campo mysql (ad es. da phpmyadmin) e 
leggerli da php.
questo mi darebbe la possibilita' di fare un po' come mi pare, ma non so 
come leggere i commenti :-/


 comunque file_exist va bene
umh.... dunque, ho risolto in modo diverso.
ci ho ripensato un po', e dato che :
- non so quanti campi della tabella possono essere di "tipo file"
- potrebbero anche essere file esterni al server stesso
- non so se il server (esterno) e' raggiungibile
- potrebbero anche essere file da diversi mega (anche 20)
- non so la velocita' del server esterno
- possono essere stampati a video anche 200 records
il carico di lavoro probabilmente e' tanto, nel senso che anche se la 
tabella ha solo campo "file", dovrei spupazzarmi ad es. 200 
file_exists() a pagina (con file sdi ignote dimensioni).
nel caso la tabella abbia due campi diventano 400 file_exists() a pagina.
il che sinceramente non mi sconfinfera molto :-/
percio' mi sono creato un array, generato dinamicamente da php (e 
scritto in un file.php da includere) dove viene scritto:
"nome del campo"=>"tipo del campo"
ad es.
"nome"=>"text","cognome"=>"text","foto"=>"file"
da php poi, faro' in modo di utilizzare il valore associato e stampare a 
video le cose in modo corretto e, immagino, piu' veloce che non aprire 
200 files.
ma sono ben accetti consigli/suggerimenti/ecc ^___^
(a proposito: c'e' verso di leggere i commenti di un campo?)


 wrote in message
c6ut8k$gdgii$1...@ID-155253.news.uni-berlin.de...

mi sa che hai ragione
vedo di provvedere al più presto

relativa, ma anche questo non posso saperlo a priori.
Non importa :-) - se il path e' assoluto F() e' una funzione
nulla
	F($str) { return $str; }
se e' relativo, ci vorra' una botta di realpath() o quel che
sara'.


 **Se** e' vera, forse ho una soluzione pratica :-)
:)
penso che sia vera, correggimi se sbaglio...
il campo puo':
1. essere nullo
2. essere vuoto
3. contenere una stringa tipo 
http://www.dom.ext/file.ext
4. contenere una stringa tipo /dir1/dir2/file.ext
5. contenere una stringa o numero qualsiasi
casistica:
1. || 2. -> var = &nbsp;
3. || 4. -> var = <link _blank>valorecampo</link>
5. -> var = valorecampo


5. contenere una stringa o numero qualsiasi
Si', ma se il campo (poniamo) "Piripao" contiene un link, questo vuol
dire che *tutti* i record conterranno dei link (o saranno vuoti), nel
campo "Piripao"?
Cioe', quello che NON deve succedere e' questo:
SELECT campo FROM tabella;
	""
	"
http://www.john.it
"
	""
	"
http://www.google.it
"
	"
http://www.simpson.net
"
	"Mio Dio! E' pieno di stelle!" <---- NO!
	"
http://snipurl.com
"


 	"
http://snipurl.com
"
eh, purtroppo potrebbe esserci un caso limite, tipo che nel campo c'e' 
la path relativa a un file che puo' (disgraziatamente) chiamarsi:
Mio Dio! E' pieno di stelle!.jpg
o, come sui sistemi unix/linux, non e' detto che ci sia un'estensione.
ad esempio i vari README.
:(


Mio Dio! E' pieno di stelle!.jpg
E' un file, quindi va bene.
Prova cosi':
	$is_path = array();
	while($record = ... )
	{
		foreach($record as $field => $value)
		{
			if (isset($is_path[$field]))
			{
				if (1==$is_path[$field])
					output_as_file($value);
				else
					output_as_not_file($value);
			}
			else
			{
				if ('' == $value)
				{
					// Campo vuoto, non si sa cosa sia
				}
				else
				{
					// altri controlli per decidere
					// se il campo NON E' un file e
					// nel caso impostare is_file a
					// 0
					...
					if (file_exists($value))
					{
						$is_path[$field] = 1;
						output_as_file($value);
