I recenty encountered a problem with greek characters in links inside URL tags (i.e. http://γιατρος.gr). After a bit of digging around i found out that the previous link is considered invalid due to the regex used in functions.php for validating urls. So i thought it would be a good idea to have events capable of modifying various bbcode validations, such as urls.
For example, by adding an event such as
Code: Select all
/**
* Event to add extra validations to url bbcode tag
*
* @event core.add_extra_validations_to_url
* @var valid check for validity
* @url url to validate
* @since 3.1.0-a3
*/
$vars = array('url','valid');
extract($phpbb_dispatcher->trigger_event('core.add_extra_validations_to_url', compact($vars)));
Code: Select all
class main_listener implements EventSubscriberInterface
{
static public function getSubscribedEvents()
{
return array(
'core.add_extra_validations_to_url' => 'allow_greek_in_url_bbcode',
);
}
public function allow_greek_in_url_bbcode($event)
{
if(!$event['valid'])
if (preg_match("#^[a-z][a-z\d+\-.]*:/{2}(?:(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς.]+:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς.]+:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς.:]+\])(?::\d*)?(?:/(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?$#i", $event['url']) ||
preg_match("#^www\.(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[a-z0-9a-z0-Α-Ωα-ωΪΫάέήίΰϊϋόύώς\-._~!$&'()*+,;=:@/?|]+|%[\dA-F]{2})*)?$#i", $event['url']))
{
$event['valid'] = true;
}
}
}