catch a couple of edge cases with the tag linkifier
This commit is contained in:
parent
051fb7107e
commit
6301de1032
2 changed files with 12 additions and 2 deletions
12
boot.php
12
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')) {
|
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));
|
||||||
|
|
|
@ -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]';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue