From 6301de10321733a6578e59347b6b54fbd534de06 Mon Sep 17 00:00:00 2001 From: Mike Macgirvin Date: Thu, 28 Oct 2010 20:11:50 -0700 Subject: [PATCH] catch a couple of edge cases with the tag linkifier --- boot.php | 12 +++++++++++- mod/item.php | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 870a4c33b7..f69d66be55 100644 --- a/boot.php +++ b/boot.php @@ -1298,10 +1298,18 @@ function activity_match($haystack,$needle) { }} +// Pull out all #hashtags and @person tags from $s; +// We also get @person@domain.com - which would make +// the regex quite complicated as tags can also +// end a sentence. So we'll run through our results +// and strip the period from any tags which end with one. +// Returns array of tags found, or empty array. + + if(! function_exists('get_tags')) { function get_tags($s) { $ret = array(); - if(preg_match_all('/([@#][^ ,:?]*)[ ,:?]/',$s,$match)) { + if(preg_match_all('/([@#][^ ,:?]*)([ ,:?]|$)/',$s,$match)) { foreach($match[1] as $match) { if(substr($match,-1,1) === '.') $ret[] = substr($match,0,-1); @@ -1314,6 +1322,8 @@ function get_tags($s) { }} +// quick and dirty quoted_printable encoding + if(! function_exists('qp')) { function qp($s) { return str_replace ("%","=",rawurlencode($s)); diff --git a/mod/item.php b/mod/item.php index 64a23e7fb1..126f8b6a1a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -147,10 +147,10 @@ function item_post(&$a) { } } if($profile) { - $profile = str_replace(',','%2c',$profile); $body = str_replace($name,'[url=' . $profile . ']' . $name . '[/url]', $body); if(strlen($str_tags)) $str_tags .= ','; + $profile = str_replace(',','%2c',$profile); $str_tags .= '[url=' . $profile . ']' . $name . '[/url]'; } }