summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/cases/inc/pageutils_clean_id.test.php9
-rw-r--r--inc/pageutils.php1
2 files changed, 10 insertions, 0 deletions
diff --git a/_test/cases/inc/pageutils_clean_id.test.php b/_test/cases/inc/pageutils_clean_id.test.php
index 01fa7dc1c..ece71e899 100644
--- a/_test/cases/inc/pageutils_clean_id.test.php
+++ b/_test/cases/inc/pageutils_clean_id.test.php
@@ -36,6 +36,15 @@ class init_clean_id_test extends UnitTestCase {
$tests[] = array('page:page',false,'page:page');
$tests[] = array('page;page',false,'page:page');
+ $tests[] = array('page._#!','false','page');
+ $tests[] = array('._#!page','false','page');
+ $tests[] = array('page._#!page','false','page._page');
+ $tests[] = array('ns._#!:page','false','ns:page');
+ $tests[] = array('ns:._#!page','false','ns:page');
+ $tests[] = array('ns._#!ns:page','false','ns._ns:page');
+ $tests[] = array('ns_:page',false,'ns:page');
+ $tests[] = array('page...page','false','page...page');
+
$conf['useslash'] = 0;
$tests[] = array('page/page',false,'page_page');
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 81dcb66e7..31b5f9ff9 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -134,6 +134,7 @@ function cleanID($raw_id,$ascii=false,$media=false){
$id = preg_replace('#:+#',':',$id);
$id = ($media ? trim($id,':.-') : trim($id,':._-'));
$id = preg_replace('#:[:\._\-]+#',':',$id);
+ $id = preg_replace('#[:\._\-]+:#',':',$id);
$cache[(string)$raw_id] = $id;
return($id);