URL Rewriting Class
Ik heb een klasse gemaakt om URL's te begrijpen. Om hem te kunnen gebruiken moet je wel een htaccess bestand aanmaken... dat staat ook omschreven in de code. Voor meer informatie over deze URL rewriting kun je terecht bij de goede tutorial van Boaz http://www.phphulp.nl/php/tutorials/8/629/ Naar aanleiding van die tut heb ik ook deze klasse gemaakt. Het gaat dus ook om url's in het formaat http://www.jouwsite.nl/nieuws/2/34/ Leef je er maar op los, en geef graag reacties. Dit is mijn eerste script dat ik post dus alle commentaar is welkom. Dit is ook de eerste echte klasse die ik überhaupt programmeer... dus ik moet het nog leren ;) Met de functiekun je een eigenschap ophalen. het gaat om eigenschap nummer 1 of 2 of 3 enzovoorts. NIEUW! Als je een negatief nummer opgeeft begint hij van achteraan te tellen ! Met de onderstaande functie kun je een naam van een variabele én een waarde ophalen. in de URL ziet het er bijvoorbeeld uit als http://www.jouwsite.com/nieuws/id:23/4/ Als je dan het id wilt weten is NIEUW! De laatste variabele, $expression, is standaard false. Als je die true maakt is $isSign een expressie, dus bijvoorbeeld [:-,] Als je het niet begrijpt kun je een mailtje sturen, maar het staat bij gevorderd, dus voor de gevordenen zal het voor zich spreken ;) Laatste mededeling... natuurlijk is commentaar welkom, maar ook tips voor een volgende versie. Dit stelt namelijk eigenlijk niets voor ;)
HET .htaccess BESTAND .htaccess[code]
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
[/code]
HET PHP BESTAND class.url.php
<?php
/*************************************
= URL Engine door Harm Wellink =======
= Versie: 0.2B ===== [email protected] =
= Datum: 09-08-08 = www.harmweb.nl ==
**************************************/
/******************************************************
Deze URL Engine is het best te
gebruiken met het bijgeleverde .htaccess bestand. Lees
de site of de leesmij voor meer info
* * * * * * *
Dit script is vrij te gebruiken zolang
mijn informatie helemaal bovenaan
blijft staan!
********************************************************/
class URLEngine
{
private $URLInfo;
private $URLItems;
private $URLSplit;
public function __construct( $teken = "/" )
{
$this->URLInfo = trim( $_SERVER[ 'PATH_INFO' ] );
$this->URLItems = explode( $teken , $this->URLInfo );
$this->URLSplit = $teken;
}
public function getProperty( $number )
{
if ( $number < 0 )
{
$number = abs( $number );
if ( count ( $this->URLItems ) < $number )
{
return $this->URLItems;
}
else
{
return $this->URLItems[ count ( $this->URLItems ) - $number ];
}
}
elseif ( count( $this->URLItems ) >= $number )
{
return $this->URLItems[$number];
}
else
{
return $this->URLItems;
}
}
public function getPropertyValue( $variableName , $isSign , $expression = false)
{
if ( $isSign != $this->URLSplit )
{
foreach ( $this->URLItems as $item )
{
$func = ( $expression ? "split" : "explode" );
$itemsplit = $func( $isSign , $item , 2 );
if (( count ( $itemsplit ) == 2 ) && ( $itemsplit[0] == $variableName ))
{
$return .= $itemsplit[1]."<br />";
}
}
}
else
{
foreach ( $this->URLItems as $key => $item )
{
if ( $item == $variableName )
{
$return = $this->URLItems[ $key + 1 ];
}
}
}
return $return;
}
}
?>
[b]Voorbeeldje in gebruik:[/b]
<?php
require_once "class.url.php";
$engine = new URLEngine();
//Standaard is URLEngine("/") --> Dat is ook wat ik wil in dit voorbeeld ;)
echo $engine->getParameter(-1);
echo "<br />";
echo $engine->getParameterValue("phphulper","[-:;]",true);
?>
Op een url als bijvoorbeeld: www.jouwsite.nl/nieuwspagina/phphulper-ja/132 geeft hij als output:[code]132
ja[/code]
Reacties
0