Directory handling in PHP is pretty much the same and easier as in C. To fetch the current working directory in PHP – dirname( __FILE__ ) will do, but to fetch the current path url we need to rely on $_SERVER, which holds all the information like host name, currently executing script, protocol ( http or https ) and so on. You can find tons of manual on this $_SERVER, so I am not going to write another manual page for this PHP variable. I have written a function that will return the current path url as I did earlier with JQuery – ( get the path of executed JS file ).
Here is the few lines of code written as a function so you can call wherever you want.
function my_url(){ $url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; return $url; }
Now call your function like this
$url = my_url();
This will return the current path url. I have also extended this basic function into a PHP class that gives you more option in url manipulation.
class myUrl { var $protocol; var $site; var $thisfile; var $real_directories; var $num_of_real_directories; var $virtual_directories = array(); var $num_of_virtual_directories = array(); var $baseurl; var $thisurl; function myUrl() { $this->protocol = ( isset( $_SERVER["HTTPS"] ) && strtolower( $_SERVER["HTTPS"] ) == "on" ) ? 'https' : 'http'; $this->site = $this->protocol . '://' . $_SERVER['HTTP_HOST']; $this->thisfile = basename($_SERVER['SCRIPT_FILENAME']); $this->real_directories = $this->cleanUp(explode("/", str_replace($this->thisfile, "", $_SERVER['PHP_SELF']))); $this->num_of_real_directories = count($this->real_directories); $this->virtual_directories = array_diff($this->cleanUp(explode("/", str_replace($this->thisfile, "", $_SERVER['REQUEST_URI']))),$this->real_directories); $this->num_of_virtual_directories = count($this->virtual_directories); $this->baseurl = $this->site . "/" . implode("/", $this->real_directories) ; $this->thisurl = $this->baseurl . implode("/", $this->virtual_directories) ; if( strcmp ( substr( $this->thisurl, -1 ), "/" ) != 0 ) $this->thisurl = $this->thisurl."/"; if( strcmp ( substr( $this->baseurl, -1 ), "/" ) != 0 ) $this->baseurl = $this->baseurl."/"; } function cleanUp($array) { $cleaned_array = array(); foreach($array as $key => $value) { $qpos = strpos($value, "?"); if($qpos !== false) { break; } if($key != "" && $value != "") { $cleaned_array[] = $value; } } return $cleaned_array; } }
This class can return base url, current path url, executing script, hostname, protocol (http or https) etc. This is basically using the $_SERVER variable to manipulate the path and url.
You create an instance for this class and access the values like this
$dir = new myUrl( ); echo "This url: ".$dir->thisurl; print "<br />"; echo "Site: ".$dir->site; print "<br />"; echo "This file: ".$dir->thisfile;
You can put this whole class into a php file and include it wherever you want, it will make easier for you in url manipulation within php.
I love this, keep it up it solve my problem easily…
Hello friend,
Well done , it is very beautiful and useful example as always ! ! !
We learnt a lot from you’re nice example ! ! !
You are a code saver
Thank you in advance.
Best Regards,
Tasos
Thank You