preg_replace_callback split url
Jeg har lavet den her som næsten funker, dog har jeg lidt problemer med at få den til at virke med "#blabla"Iden er at den selv skal gennemsøge for links og tilføje et session id efter, her kommer der så et lille problem
med alle de links som har "#blabla" på.. og så kunne det sikkert optimeres lidt mere :D
<pre>
<?php
$sid = 'sid=b8c1a3069167247e3503f0daba6c5723';
$host = 'www.this.dk'; /* $_SERVER['HTTP_HOST']; */
$htmlCode =
'<a href="http://www.this.dk/">this server</a>
<a href="http://www.server1.dk/">server1</a>
<a href="/page/page.php">this server</a>
<a href="http://www.this.dk/page/page.php#blabla">this server</a>
<a href="http://www.this.dk/page.php?sid=blabla">this server</a>';
// $htmlCode = '<a href="http://www.this.dk/page/page.php#blabla">this server</a>';
$htmlCode = preg_replace_callback('#(href=")(.*)(")#', '__callback_sid', $htmlCode);
function __callback_sid($array)
{
global $sid, $host;
print_r($array);
$url = $array[2];
if (isset($sid) && isset($host))
{
if (eregi('http://'.$host, $url) || !eregi('http://', $url))
{
if (!preg_match('#sid=#', $url))
{
$url .= ((strpos($url, '?') !== false) ? '&' : '?').$sid;
}
}
}
return $array[1].$url.$array[3];
}
echo $htmlCode;
?>
</pre>
