mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Make external links in comments clickable (FS#20137).
Comments are now split at link boundaries and links are converted separately. I find this to be a much cleaner way than re-converting comments that have already been converted using htmlspecialchars(). This also doesn't require any callback procedure. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
parent
a417224988
commit
60edcd04e5
2 changed files with 25 additions and 1 deletions
|
@ -494,3 +494,27 @@ function salted_hash($passwd, $salt)
|
|||
}
|
||||
return md5($salt . $passwd);
|
||||
}
|
||||
|
||||
function parse_comment($comment)
|
||||
{
|
||||
$url_pattern = '/(\b(?:https?|ftp):\/\/[\w\/\#~:.?+=&%@!\-;,]+?' .
|
||||
'(?=[.:?\-;,]*(?:[^\w\/\#~:.?+=&%@!\-;,]|$)))/iS';
|
||||
|
||||
$matches = preg_split($url_pattern, $comment, -1,
|
||||
PREG_SPLIT_DELIM_CAPTURE);
|
||||
|
||||
$html = '';
|
||||
for ($i = 0; $i < count($matches); $i++) {
|
||||
if ($i % 2) {
|
||||
# convert links
|
||||
$html .= '<a href="' . htmlspecialchars($matches[$i]) .
|
||||
'">' . htmlspecialchars($matches[$i]) . '</a>';
|
||||
}
|
||||
else {
|
||||
# convert everything else
|
||||
$html .= nl2br(htmlspecialchars($matches[$i]));
|
||||
}
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ while (list($indx, $carr) = each($comments)) { ?>
|
|||
?></div>
|
||||
<blockquote class="comment-body">
|
||||
<div>
|
||||
<?php echo nl2br(htmlspecialchars($carr['Comments'])) ?>
|
||||
<?php echo parse_comment($carr['Comments']) ?>
|
||||
</div>
|
||||
</blockquote>
|
||||
<?php
|
||||
|
|
Loading…
Add table
Reference in a new issue