Preg_replace

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Preg_replace

Messaggio da darkstaring »

Sera a tutti... :D
Devo fare uno scipt in php che funzioni in qualsiasi directory della www/
inizialmente ho fatto questa funzione:

Codice: Seleziona tutto

define("ABSOUTE", $_SERVER['DOCUMENT_ROOT']."/mia_directory/");
$pwd=str_replace(ABSOUTE, "", $_SERVER['SCRIPT_FILENAME']);
$pwd=explode("/", $pwd);
$url='';
for($i=1;$i<count($pwd);$i++)
{
    $url.='../';
}

if(! include($url.'conn/conn.php')) { print "Errore. Carico: ".$url."conn/conn.php";}
Così.. ovunque sposti lo script, il file conn/conn.php viene incluso , (se rimane dentro /mia_directory/)...
Ma come vedete faccio un ciclo.. vorrei velocizzare il tutto con delle espressioni regolari, cosa che ahimè non conosco bene.... :evil:
Mi spiego
allora voglio sostituire qualsiasi cosa tra $_SERVER['DOCUMENT_ROOT']. e dirname(__FILE__) ,
tra gli slash "/" con "/../"...
Esempio:
/www/pippo/pluto/paperino
io ho un file da includere in /www/prova.php
se sposto il file dentro la dir pippo o pluto o paperino deve includere sempre lo stesso file senza variare lo script...
ma i ../ si devono generare possibilmente senza cicli ma con un :
replace di pippo con ..
replace di pluto con ..
replace di paperino con ..

Spero di essermi spiegato bene

Grazie

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Preg_replace

Messaggio da conraid »

Ho capito poco, ma se il file da includere è sempre nello stesso posto usa i path assoluti no?

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: Preg_replace

Messaggio da darkstaring »

Non posso usare path assoluti... I path si devono generare... In pratica vorrei sostituire tutti i caratteri tra slash , con ..

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Preg_replace

Messaggio da conraid »

Ma se il file da includere è sempre in /www/prova.php non capisco il problema.

Al limite fai un esempio più reale per capire.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Preg_replace

Messaggio da conraid »

Comunque

$pippo = "/maio/pluto/gino/prova.php";
$prova = preg_replace("/[A-Za-z]*\//", "../", $pippo);
echo $prova;

risultato ../../../../prova.php

dovrebbe funzionare, adattalo al tuo caso

Se non vuoi il primo fai un altra regex per ^../

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: Preg_replace

Messaggio da darkstaring »

Grazie 1000.. Ma ancora non funziona...
In pratica uso $_SERVER['REQUEST_URI'] e vedo che mi aggiunge un ../ in più...
Comunque la lezione mi è servita... Grazie :thumbright:

Rispondi