Opened 7 years ago
Last modified 7 years ago
#3237 closed defect (bug)
bbp_make_clickable() doesn't handle spaces in linked text, and incorrectly duplicates `<a>` — at Version 1
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | 2.6 | Priority: | normal |
| Severity: | normal | Version: | 2.2 |
| Component: | API - Formatting | Keywords: | needs-patch |
| Cc: |
Description (last modified by )
As reported in https://meta.trac.wordpress.org/ticket/3998
<a href="https://codex.wordpress.org/Roles and Capabilities">https://codex.wordpress.org/Roles and Capabilities</a>turns into:
<a href="https://codex.wordpress.org/Roles and Capabilities" rel="nofollow"></a><a href="https://codex.wordpress.org/Roles" rel="nofollow">https://codex.wordpress.org/Roles</a> and CapabilitiesLooks like either
make_clickable()orbbp_make_clickable()is trying to make the URL clickable without taking the existing<a>tag into account.
As I've commented on the ticket:
This is a problem in bbp_make_clickable(), but is also present in make_clickable().
Given the input string of <a href="https://codex.wordpress.org/Roles and Capabilities">https://codex.wordpress.org/Roles and Capabilities</a> both will return the invalid output.
Both contain the following to correct it:
return preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i', "$1$3</a>", $r );
But as the resulting HTML is the following it's not matched (due to the </a></a> - which assumes that neither the linked text never has spaces or isn't a URL)
<a href="https://codex.wordpress.org/Roles and Capabilities"><a href="https://codex.wordpress.org/Roles" rel="nofollow">https://codex.wordpress.org/Roles</a> and Capabilities</a>
Adjusting the regular expression to the following does work however:
return preg_replace( '#(<a([ \r\n\t]+[^>]+?>|>))<a [^>]+?>([^>]+?)</a>([^<]*)</a>#i', "$1$3$4</a>", $r );
As a work around, you can remove the spaces from the linked text, which avoids it:
<a href="https://codex.wordpress.org/Roles and Capabilities">https://codex.wordpress.org/Roles and Capabilities</a>.
I've also created https://core.trac.wordpress.org/ticket/45702