Ticket #3228 (closed defect (bug): fixed)

Opened 5 years ago

Last modified 5 years ago

make_clickable() doesn't make all links clickable

Reported by: mdawaffe Owned by: markjaquith
Priority: normal Milestone:
Component: Template Version:
Severity: normal Keywords:
Cc:

Description (last modified by markjaquith) (diff)

If a link is the first string after a tag such as <p>http://wordpress.org ... or <em>http://wordpress.org/</em>, the link is not made clickable.

2.0.5? [4012] (the change that broke this) went into branches/2.0

Attachments

make_clickable.php Download (2.0 KB) - added by markjaquith 5 years ago.
Test Old vs. New vs. Proposed

Change History

  • Component changed from Administration to Template

I think you meant [4012]. ;)

Yes, I did mean [4012]. Thanks :)

  • Description modified (diff)

Test Old vs. New vs. Proposed

  • Owner changed from anonymous to markjaquith
  • Status changed from new to assigned

Check out that upload. I've been playing with that (was testing in PHP console, so add htmlspecialchars() and <hr /> if you're testing in a browser)

My fix is simple to look for anchors within anchors, and removing the internal (undesired) anchor (the one created by our function).

For people who just want to see the results, here is the input of my script:

<p>http://example.com/ is a link.  So is: http://example.com/</p>
<p><a href="http://example.com/">example.com</a></p>
<p>www.example.com/signup/</p>
<p>ftp.example.org</p>
<p>example@example.com</p>
<p>ftp://example.com/foo/bar/</p>

Here is the output of that script.

Old function (WP < 2.0.4):

<p><a href='http://example.com/' rel='nofollow'>http://example.com/</a> is a link.  So is: <a href='http://example.com/' rel='nofollow'>http://example.com/</a></p>
<p><a href="http://example.com/">example.com</a></p>
<p>www.example.com/signup/</p>
<p>ftp.example.org</p>
<p>example@example.com</p>
<p>ftp://example.com/foo/bar/</p>

New function (2.0.4 and currently in trunk):

<p>http://example.com/ is a link.  So is: <a href='http://example.com/' rel='nofollow'>http://example.com/</a></p>
<p><a href="http://example.com/">example.com</a></p>
<p>www.example.com/signup/</p>
<p>ftp.example.org</p>
<p>example@example.com</p>
<p>ftp://example.com/foo/bar/</p>

My proposed function:

<p><a href='http://example.com/' rel='nofollow'>http://example.com/</a> is a link.  So is: <a href='http://example.com/' rel='nofollow'>http://example.com/</a></p>
<p><a href="http://example.com/">example.com</a></p>
<p><a href='http://www.example.com/signup/' rel='nofollow'>www.example.com/signup/</a></p>
<p><a href='http://ftp.example.org' rel='nofollow'>ftp.example.org</a></p>
<p><a href="mailto:example@example.com">example@example.com</a></p>
<p><a href='ftp://example.com/foo/bar/' rel='nofollow'>ftp://example.com/foo/bar/</a></p>

This is the last remaining ticket for 2.0.5 ... help a brother out!

And just to outline the problem that necessitated the change from old to new, and the problem introduced by new:

Input:

<p><a href="http://example.com/">http://example.com/</a></p>
<p>http://example.com</p>

Old:

<p><a href="http://example.com/"><a href='http://example.com/' rel='nofollow'>http://example.com/</a></a></p>
<p><a href='http://example.com' rel='nofollow'>http://example.com</a></p>

New:

<p><a href="http://example.com/">http://example.com/</a></p>
<p>http://example.com</p>

Proposed:

<p><a href="http://example.com/">http://example.com/</a></p>
<p><a href='http://example.com' rel='nofollow'>http://example.com</a></p>
  • Status changed from assigned to closed
  • Resolution set to fixed

(In [4385]) make_clickable() now faster and supports more link positions, from mdawaffe and myself. fixes #3228

(In [4386]) make_clickable() now faster and supports more link positions, from mdawaffe and myself. fixes #3228

(In [4387]) fix function name error in last two commits. fixes #3228

  • Milestone 2.0.5 deleted

Milestone 2.0.5 deleted

Note: See TracTickets for help on using tickets.