diff --git a/classes/Notice.php b/classes/Notice.php
index 5e1f83a52f..06750b4363 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -54,10 +54,13 @@ class Notice extends DB_DataObject
function saveTags() {
/* extract all #hastags */
- $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9]{1,64})/', strtolower($this->content), $match);
+ $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match);
if (!$count) {
return true;
}
+
+ /* elide characters we don't want in the tag */
+ $match[1] = str_replace(array('-', '_', '.'), '', $match[1]);
/* Add them to the database */
foreach(array_unique($match[1]) as $hashtag) {
diff --git a/lib/util.php b/lib/util.php
index 469bc986fe..1530092126 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -688,16 +688,16 @@ function common_render_content($text, $notice) {
$r = preg_replace('@https?://[^)\]>\s]+@', '\0', $r);
$r = preg_replace('/(^|\s+)@([a-z0-9]{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
$r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
- $r = preg_replace('/(^|\s+)#([A-Za-z0-9]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
+ $r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
# XXX: machine tags
return $r;
}
function common_tag_link($tag) {
if(common_config('site', 'fancy')) {
- return '' . htmlspecialchars($tag) . '';
+ return '' . htmlspecialchars($tag) . '';
} else {
- return '' . htmlspecialchars($tag) . '';
+ return '' . htmlspecialchars($tag) . '';
}
}