Pagina 1 di 1

Preg_replace

Inviato: ven 2 set 2016, 18:46
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

Re: Preg_replace

Inviato: sab 3 set 2016, 11:07
da conraid
Ho capito poco, ma se il file da includere è sempre nello stesso posto usa i path assoluti no?

Re: Preg_replace

Inviato: sab 3 set 2016, 11:10
da darkstaring
Non posso usare path assoluti... I path si devono generare... In pratica vorrei sostituire tutti i caratteri tra slash , con ..

Re: Preg_replace

Inviato: sab 3 set 2016, 11:16
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.

Re: Preg_replace

Inviato: sab 3 set 2016, 11:31
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 ^../

Re: Preg_replace

Inviato: lun 5 set 2016, 8:31
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: