summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Andrews <candrews@integralblue.com>2009-09-10 21:19:38 -0400
committerCraig Andrews <candrews@integralblue.com>2009-09-10 21:19:38 -0400
commit292bb7c4d8ca469447385e29a80f125e03284d70 (patch)
treed6e004fa4a329cbec7f16caefe6b9233c8e13fd6
parent2a56245614f90221946ab918e820f6546133a212 (diff)
Allow @ signs in the path, querystring, and fragment parts of URLs
-rw-r--r--lib/util.php6
-rw-r--r--tests/URLDetectionTest.php2
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/util.php b/lib/util.php
index 292045928..b831859e9 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -442,9 +442,9 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) {
')'.
'(?:'.
'(?:\:\d+)?'. //:port
- '(?:/[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"]*)?'. // /path
- '(?:\?[\pN\pL\$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"\/]*)?'. // ?query string
- '(?:\#[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"\/\?\#]*)?'. // #fragment
+ '(?:/[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"@]*)?'. // /path
+ '(?:\?[\pN\pL\$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"@\/]*)?'. // ?query string
+ '(?:\#[\pN\pL$\[\]\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\+\'\"\@/\?\#]*)?'. // #fragment
')(?<![\?\.\,\#\,])'.
')'.
'#ixu';
diff --git a/tests/URLDetectionTest.php b/tests/URLDetectionTest.php
index 87b537646..1c3f7cd96 100644
--- a/tests/URLDetectionTest.php
+++ b/tests/URLDetectionTest.php
@@ -27,6 +27,8 @@ class URLDetectionTest extends PHPUnit_Framework_TestCase
return array(
array('not a link :: no way',
'not a link :: no way'),
+ array('link http://www.somesite.com/xyz/35637563@N00/52803365/ link',
+ 'link <a href="http://www.somesite.com/xyz/35637563@N00/52803365/" rel="external">http://www.somesite.com/xyz/35637563@N00/52803365/</a> link'),
array('http://127.0.0.1',
'<a href="http://127.0.0.1/" rel="external">http://127.0.0.1</a>'),
array('127.0.0.1',