[ create a new paste ] login | about

Link: http://codepad.org/5VIEcAWy    [ raw code | output | fork ]

PHP, pasted on Jul 1:
<?php
$add = array(
 'utm_source'=>'edm',
 'utm_medium'=>'email',
 'utm_campaign'=>'product_notify');
$doc = new DOMDocument();
$doc->loadHTML('First Link <a href="http://www.google.com">no param</a><br />
                Second Link <a href="http://www.google.com/">no param with /</a><br />
                Third Link <a href="http://www.google.com?query=one">one  param</a><br />
                Fourth Link <a href="http://www.google.com?query=one&q2=two">two  param</a><br />');

foreach($doc->getElementsByTagName('a') as $link){
    $url = parse_url($link->getAttribute('href'));
    
    $params = array();
    if (isset($url['query'])) {
        parse_str($url['query'], $params);
    }
    $gets = array_merge($params, $add);
    
    $newstring = '';
    if(isset($url['scheme'])) $newstring .= $url['scheme'].'://';
    if(isset($url['host']))   $newstring .= $url['host'];
    if(isset($url['port']))   $newstring .= ':'.$url['port'];
    if(isset($url['path']))   $newstring .= $url['path'];
    $newstring .= '?'.http_build_query($gets);
    if(isset($url['fragment']))   $newstring .= '#'.$url['fragment'];
    $link->setAttribute('href',$newstring);
 }
 $html = $doc->saveHTML();
 echo $html;


Output:
1
2
3
4
5
6
7

Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 4 on line 10
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>First Link <a href="http://www.google.com?utm_source=edm&amp;utm_medium=email&amp;utm_campaign=product_notify">no param</a><br>
                Second Link <a href="http://www.google.com/?utm_source=edm&amp;utm_medium=email&amp;utm_campaign=product_notify">no param with /</a><br>
                Third Link <a href="http://www.google.com?query=one&amp;utm_source=edm&amp;utm_medium=email&amp;utm_campaign=product_notify">one  param</a><br>
                Fourth Link <a href="http://www.google.com?query=one&amp;q2=two&amp;utm_source=edm&amp;utm_medium=email&amp;utm_campaign=product_notify">two  param</a><br></p></body></html>


Create a new paste based on this one


Comments: