Fix for MB Markdown links #1749

This commit is contained in:
Andy Miller
2017-11-27 18:21:08 -07:00
parent cb4147a4bd
commit 2462331884
2 changed files with 34 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ use Grav\Common\Grav;
use Grav\Common\Page\Page;
use Grav\Common\Uri;
use Grav\Common\Page\Medium\Medium;
use Grav\Common\Utils;
use RocketTheme\Toolbox\Event\Event;
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
@@ -321,7 +322,7 @@ class Excerpts
*/
protected static function parseUrl($url)
{
$url_parts = parse_url($url);
$url_parts = Utils::multibyteParseUrl($url);
if (isset($url_parts['scheme'])) {
/** @var UniformResourceLocator $locator */

View File

@@ -997,4 +997,36 @@ abstract class Utils
return intval($size);
}
}
/**
* Multibyte-safe Parse URL function
*
* @param $url
* @return mixed
*/
public static function multibyteParseUrl($url)
{
$enc_url = preg_replace_callback(
'%[^:/@?&=#]+%usD',
function ($matches)
{
return urlencode($matches[0]);
},
$url
);
$parts = parse_url($enc_url);
if($parts === false)
{
throw new \InvalidArgumentException('Malformed URL: ' . $url);
}
foreach($parts as $name => $value)
{
$parts[$name] = urldecode($value);
}
return $parts;
}
}