Modify URL validation to accept non-ASCII characters #57
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Domains containing non-ASCII characters are rejected in the URL validator
craft-linkfield/src/models/InputLinkType.php
Line 262 in ec8ffee
As the docs for FILTER_VALIDATE_URL state:
I'm passing the url first through idn_to_ascii() to convert to a punycode url
https://www.php.net/manual/en/function.idn-to-ascii.php
So as an example, a domain such as
http://www.tästdomäin.de
will now be valid as it is internally first converted tohttp://www.xn--tstdomin-0zaf.de
before validation.The URL is finally still saved to DB in the original form including the Unicode chars, which is not valid by itself in browsers as a link. Users of the plugin thus must take care themselves to convert that as needed and write the punycode URL to href="" attributes, for example.