Hello and help please! (url parsing)
Posted: Fri Feb 04, 2005 4:35 pm
Hi,
Looks like I found a decent forum. I'm an ad-hoc php developer of several years now, but some simple things still evade me, so I hope someone can help fill in the blanks.
This problem has been bugging me for a while now and I can't find a simple solution anywhere:
Just like this forum, I am using phpbb. Now, there is a specific url which people enter on my site, lets call it just.some.com. I want this url parsed so that it goes through a forwarder of my choice.
So for example the url the user enters is:
http://just.some.com/file.php
I want it to end up on the forum as:
http://www.myforward.net/forward.php?ht ... m/file.php
I obviously need to use a regular expression, but I've tried various things and I just can't get it to work properly.
I have located the url parsing area within bbcode.php in phpbb:
I have tried all sorts of preg_replace functions, similar to the url parsing line in the code above, but nothing works.
Could anyone please give me a definitive solution for this? It will save me a lot of headache and I'm sure this is fairly simple.
Thanks,
T.
Looks like I found a decent forum. I'm an ad-hoc php developer of several years now, but some simple things still evade me, so I hope someone can help fill in the blanks.
This problem has been bugging me for a while now and I can't find a simple solution anywhere:
Just like this forum, I am using phpbb. Now, there is a specific url which people enter on my site, lets call it just.some.com. I want this url parsed so that it goes through a forwarder of my choice.
So for example the url the user enters is:
http://just.some.com/file.php
I want it to end up on the forum as:
http://www.myforward.net/forward.php?ht ... m/file.php
I obviously need to use a regular expression, but I've tried various things and I just can't get it to work properly.
I have located the url parsing area within bbcode.php in phpbb:
Code: Select all
/**
* Rewritten by Nathan Codding - Feb 6, 2001.
* - Goes through the given string, and replaces xxxx://yyyy with an HTML <a> tag linking
* to that URL
* - Goes through the given string, and replaces www.xxxx.yyyyїzzzz] with an HTML <a> tag linking
* to http://www.xxxx.yyyyї/zzzz]
* - Goes through the given string, and replaces xxxx@yyyy with an HTML mailto: tag linking
* to that email address
* - Only matches these 2 patterns either after a space, or at the beginning of a line
*
* Notes: the email one might get annoying - it's easy to make it more restrictive, though.. maybe
* have it require something like xxxx@yyyy.zzzz or such. We'll see.
*/
function make_clickable($text)
{
// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;
// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#(^|ї\n ])(ї\w]+?://ї^ "\n\r\t<]*)#is", "\\1<a href="\\2" target="_blank">\\2</a>", $ret);
// matches a "www|ftp.xxxx.yyyyї/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#(^|ї\n ])((www|ftp)\.ї^ "\t\n\r<]*)#is", "\\1<a href="http://\\2" target="_blank">\\2</a>", $ret);
// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#(^|ї\n ])(їa-z0-9&\-_.]+?)@(ї\w\-]+\.(ї\w\-\.]+\.)*ї\w]+)#i", "\\1<a href="mailto:\\2@\\3">\\2@\\3</a>", $ret);
// Remove our padding..
$ret = substr($ret, 1);
return($ret);
}Could anyone please give me a definitive solution for this? It will save me a lot of headache and I'm sure this is fairly simple.
Thanks,
T.