I made some different fixes and this script works now with vBulletin 3.6.8. The code is not the best but seems to work much better. E.g. [ url=xxx]yyy[ /url] links will be replaces correctly. problems with missing tags like [/font][/size] behind the amazon link will be solved. there can also be an image in the post and the link will be replaced and some other small fixes.
new code for vB 3.6.8
PHP Code:
<?php
function process_amazon_links($message) {
// Convert any amazon links to use your affilliate id.
// enter your associate id here
$associate_id = "your-id-here";
if(preg_match_all("/(\"\])/",$message,$tagarray)) {
for($i=0;$i<count($tagarray[1]);$i++) {
$tagarray[1][$i] = $tagarray[1][$i]." ";
}
$message = str_replace($tagarray[0],$tagarray[1],$message);
}
$message = str_replace('[url=', '[URL=', $message);
$message = str_replace('[url]', '[URL]', $message);
$message = str_replace('[/url]', '[/URL]', $message);
if(preg_match_all("/(http:\/\/(?:[A-z0-9\.]+)?amazon.de\/\S+)/", $message, $messagearray)) {
for($i=0;$i<count($messagearray[1]);$i++) {
if(!stristr($messagearray[1][$i],"$associate_id") && strpos($messagearray[1][$i], '[img]') === false && strpos($messagearray[1][$i], '[IMG]') === false) {
$strippedurl = preg_split("/\/[a-zA-Z0-9]{3}-[a-zA-Z0-9]{7}-[a-zA-Z0-9]{7}/", $messagearray[1][$i]);
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];
// Look for an asin number
if(!preg_match("/\/[a-zA-Z0-9]{10}\//", $messagearray[1][$i],$asin)) {
if(stristr($messagearray[1][$i],"http://www.amazon.de/exec/obidos/")) {
$strippedurl = preg_split("/http:\/\/www.amazon.de\/exec\/obidos\//",$messagearray[1][$i]);
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];
}
if(stristr($messagearray[1][$i],"[/URL]")) {
$strippedurl = preg_split("/\[\/URL\]/",$messagearray[1][$i]);
$messagearray[1][$i] = $strippedurl[0].$strippedurl[1];
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/redirect?link_code=ur2&camp=1789&tag=".$associate_id."&creative=9325&path=".urlencode(str_replace('[/URL]', '', $messagearray[1][$i]))."[/URL]";
} else {
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/redirect?link_code=ur2&camp=1789&tag=".$associate_id."&creative=9325&path=".urlencode($messagearray[1][$i]);
}
} else {
if(stristr($messagearray[1][$i],'"]')) {
$bracketarray[0]='"]';
$bracketarrayrep[0] = '"] ';
$messagearray[1][$i]= str_replace($bracketarray,$bracketarrayrep,$messagearray[1][$i]);
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" . $associate_id.'"]';
} elseif(stristr($messagearray[1][$i],"[/URL]")) {
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" . $associate_id."[/URL]";
} else {
$messagearray[1][$i] = "http://www.amazon.de/exec/obidos/ASIN".$asin[0]."ref=nosim/" . $associate_id;
}
}
if($pos = strpos($messagearray[0][$i], '[/URL]')) {
$ext_str = substr($messagearray[0][$i], $pos+6);
if(strpos($messagearray[1][$i], $ext_str) === false) {
$messagearray[1][$i] .= $ext_str;
}
}
if(preg_match('/\](.*)\[\/URL\]/', $messagearray[0][$i], $out)) {
$messagearray[1][$i] = substr_replace($messagearray[1][$i], $out[0], strpos($messagearray[1][$i], '[/URL]'), 6 );
}
}
}
}
$message=str_replace($messagearray[0],$messagearray[1],$message);
return $message;
}
?>
please let me know if u have some problems. dont forget to replace amazon.de with amazon.com.