catch a couple of edge cases with the tag linkifier

This commit is contained in:
Mike Macgirvin 2010-10-28 20:11:50 -07:00
parent 051fb7107e
commit 6301de1032
2 changed files with 12 additions and 2 deletions

View File

@ -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')) { if(! function_exists('get_tags')) {
function get_tags($s) { function get_tags($s) {
$ret = array(); $ret = array();
if(preg_match_all('/([@#][^ ,:?]*)[ ,:?]/',$s,$match)) { if(preg_match_all('/([@#][^ ,:?]*)([ ,:?]|$)/',$s,$match)) {
foreach($match[1] as $match) { foreach($match[1] as $match) {
if(substr($match,-1,1) === '.') if(substr($match,-1,1) === '.')
$ret[] = substr($match,0,-1); $ret[] = substr($match,0,-1);
@ -1314,6 +1322,8 @@ function get_tags($s) {
}} }}
// quick and dirty quoted_printable encoding
if(! function_exists('qp')) { if(! function_exists('qp')) {
function qp($s) { function qp($s) {
return str_replace ("%","=",rawurlencode($s)); return str_replace ("%","=",rawurlencode($s));

View File

@ -147,10 +147,10 @@ function item_post(&$a) {
} }
} }
if($profile) { if($profile) {
$profile = str_replace(',','%2c',$profile);
$body = str_replace($name,'[url=' . $profile . ']' . $name . '[/url]', $body); $body = str_replace($name,'[url=' . $profile . ']' . $name . '[/url]', $body);
if(strlen($str_tags)) if(strlen($str_tags))
$str_tags .= ','; $str_tags .= ',';
$profile = str_replace(',','%2c',$profile);
$str_tags .= '[url=' . $profile . ']' . $name . '[/url]'; $str_tags .= '[url=' . $profile . ']' . $name . '[/url]';
} }
} }