aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/output.php
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib/output.php')
-rw-r--r--engine/lib/output.php10
1 files changed, 9 insertions, 1 deletions
diff --git a/engine/lib/output.php b/engine/lib/output.php
index 60bcc72cd..6554481f5 100644
--- a/engine/lib/output.php
+++ b/engine/lib/output.php
@@ -234,7 +234,7 @@ function elgg_clean_vars(array $vars = array()) {
*
* @example
* elgg_normalize_url(''); // 'http://my.site.com/'
- * elgg_normalize_url('dashboard'); // 'http://my.site.com/dashboard'
+ * elgg_normalize_url('dashboard'); // 'http://my.site.com/dashboard'
* elgg_normalize_url('http://google.com/'); // no change
* elgg_normalize_url('//google.com/'); // no change
*
@@ -257,6 +257,11 @@ function elgg_normalize_url($url) {
$validated = filter_var($url, FILTER_VALIDATE_URL);
}
+ // work around for handling absoluate IRIs (RFC 3987) - see #4190
+ if (!$validated && (strpos($url, 'http:') === 0) || (strpos($url, 'https:') === 0)) {
+ $validated = true;
+ }
+
if ($validated) {
// all normal URLs including mailto:
return $url;
@@ -306,6 +311,9 @@ function elgg_get_friendly_title($title) {
}
//$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);
+
+ // use A-Za-z0-9_ instead of \w because \w is locale sensitive
+ $title = preg_replace("/[^A-Za-z0-9_ ]/", "", $title);
$title = preg_replace("/[^\w ]/", "", $title);
$title = str_replace(" ", "-", $title);
$title = str_replace("--", "-", $title);