Avatar billede stuffedk Nybegynder
09. november 2007 - 12:51

Regex From Hell

Hej. Jeg er i gang med en simpel web proxy. Den virker ved at hente en side, finde alle links og ændre dem så de referere til proxien.

PROXY.PHP:
<?php
//requesting the page
$source_data = @file_get_contents($_SERVER['QUERY_STRING'], FALSE);

//Deep Link eg. http://google.com
$source_data = preg_replace('/(?<!type)=(["\']?)([a-zA-Z]{3,5}:\/\/[a-zA-Z0-9_.]{2,}\.[a-zA-Z]{2,5}[\/]?)\1/', "=$1".$_SERVER['PHP_SELF']."?$2$1",$source_data);

//Relative link eg. pic.jpg
$source_data = preg_replace('/(?<!type)=(["\']?)([a-zA-Z0-9\/%_-]+\.[a-zA-Z0-9]{2,5})[\/]?\1/',"=$1".$_SERVER['PHP_SELF']."?".$url_parsed['scheme']."://".$url_parsed['host']."/".$dir."$2$1",$source_data);

//Relative path eg. /pics/userpics    NOGET ER GALT DER
$source_data = preg_replace('/(?<!type)=(["\']?)[\/]?([a-zA-Z0-9%_-]+[\/]?)+\1/',
"=$1".$_SERVER['PHP_SELF']."?".$url_parsed['scheme']."://".$url_parsed['host']."/".$dir."$2$1",$source_data);

echo $source_data;
?>

Du bruger den ved at skrive f.eks PROXY.PHP?http://google.com (husk http://)

Jeg har brugt tamperdata plugin til firefox til at se om alle requestede biller etc. går gennem scriptet. Ellers har jeg lavet en html side med links som også er god når der skal testes: http://glbyvej.dk/links.htm

Btw så er (?<!type) til fordi at scriptet ikke skal ændre f.eks <script type="text/javascript"> eller <link type="text/css"> som ellers ligner relative links.

Håber nogen kan hjælpe.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester