mirror of
git://develop.git.wordpress.org/
synced 2025-01-17 12:58:25 +01:00
Formatting: Improve parenthesis handling in make_clickable()
.
Improve the regular expression for making links clickable to account for parenthesis in links containing an extension, for example: `http://wordpress.org/my-image(2).jpg`. Props coquardcyr, hellofromtonya, parthvataliya, rhellewellgmailcom. Fixes #62037. git-svn-id: https://develop.svn.wordpress.org/trunk@59143 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
cf536009d5
commit
9b6c034e2f
@ -2943,6 +2943,10 @@ function _make_url_clickable_cb( $matches ) {
|
||||
$suffix = $matches[3];
|
||||
}
|
||||
|
||||
if ( isset( $matches[4] ) && ! empty( $matches[4] ) ) {
|
||||
$url .= $matches[4];
|
||||
}
|
||||
|
||||
// Include parentheses in the URL only if paired.
|
||||
while ( substr_count( $url, '(' ) < substr_count( $url, ')' ) ) {
|
||||
$suffix = strrchr( $url, ')' ) . $suffix;
|
||||
@ -3115,6 +3119,7 @@ function make_clickable( $text ) {
|
||||
)*
|
||||
)
|
||||
(\)?) # 3: Trailing closing parenthesis (for parenthesis balancing post processing).
|
||||
(\\.\\w{2,6})? # 4: Allowing file extensions (e.g., .jpg, .png).
|
||||
~xS';
|
||||
/*
|
||||
* The regex is a non-anchored pattern and does not have a single fixed starting character.
|
||||
|
@ -245,6 +245,16 @@ class Tests_Formatting_MakeClickable extends WP_UnitTestCase {
|
||||
Richard Hamming wrote about people getting more done with their doors closed, but',
|
||||
),
|
||||
|
||||
// @ticket #62037
|
||||
'URL with brackets in path before the extension' => array(
|
||||
'text' => 'http://example-image(2).jpg',
|
||||
'expected' => '<a href="http://example-image(2).jpg" rel="nofollow">http://example-image(2).jpg</a>',
|
||||
),
|
||||
'URL with brackets within path and with a extension' => array(
|
||||
'text' => 'http://example-(2)-image.jpg',
|
||||
'expected' => '<a href="http://example-(2)-image.jpg" rel="nofollow">http://example-(2)-image.jpg</a>',
|
||||
),
|
||||
|
||||
// @ticket 11211
|
||||
// Test with real comments which were incorrectly linked.
|
||||
'real world: example.com text (.org URL)' => array(
|
||||
|
Loading…
x
Reference in New Issue
Block a user