From 8257471d896fe7bdc36cbaa0022e7e10477fabf5 Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Wed, 28 Aug 2013 19:40:04 +0200 Subject: [PATCH] Prevent linking inside preformatted text and code. Ignore lines that start with a space as well as text enclosed in or tags. --- LinkTitles.body.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/LinkTitles.body.php b/LinkTitles.body.php index 422d954..ed76045 100755 --- a/LinkTitles.body.php +++ b/LinkTitles.body.php @@ -121,9 +121,15 @@ // capturing subpattern (which precludes the use of conditional subpatterns). ( $wgLinkTitlesParseHeadings ) ? $delimiter = '' : $delimiter = '=+.+?=+|'; $urlPattern = '[a-z]+?\:\/\/(?:\S+\.)+\S+(?:\/.*)?'; - $delimiter = '/(' . $delimiter . '\[\[.*?\]\]|' . $templatesDelimiter . - '|\[' . $urlPattern . '\s.+?\]|'. $urlPattern . '(?=\s|$)' . - '|(?<=\b)\S+\@(?:\S+\.)+\S+(?=\b))/i'; + $delimiter = '/(' . // exclude from linking: + '\[\[.*?\]\]|' . // links + $delimiter . // titles (if requested) + $templatesDelimiter . // templates (if requested) + '^ .+?\n|\n .+?\n|\n .+?$|^ .+?$|' . // preformatted text + '.*?<.nowiki>|.*?<\/code>|' . // nowiki/code + '|\[' . $urlPattern . '\s.+?\]|'. $urlPattern . '(?=\s|$)' . // urls + '|(?<=\b)\S+\@(?:\S+\.)+\S+(?=\b)' . // email addresses + ')/i'; $black_list = str_replace( '_', ' ', '("' . implode( '", "',$wgLinkTitlesBlackList ) . '")' );