mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-11 22:08:54 +00:00
[ticket/9933] Wrong handling consecutive multiple asterisks in word censor
Fix consecutive asterisks issue in word censor. PHPBB3-9933
This commit is contained in:
parent
7a2348bf7f
commit
9a25e4ad89
2 changed files with 5 additions and 2 deletions
|
@ -95,6 +95,9 @@ class acp_words
|
||||||
trigger_error($user->lang['ENTER_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
|
trigger_error($user->lang['ENTER_WORD'] . adm_back_link($this->u_action), E_USER_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Replace multiple consecutive asterisks with single one as those are not needed
|
||||||
|
$word = preg_replace('#\*{2,}#', '*', $word);
|
||||||
|
|
||||||
$sql_ary = array(
|
$sql_ary = array(
|
||||||
'word' => $word,
|
'word' => $word,
|
||||||
'replacement' => $replacement
|
'replacement' => $replacement
|
||||||
|
|
|
@ -90,9 +90,9 @@ class cache extends acm
|
||||||
{
|
{
|
||||||
// Unescape the asterisk to simplify further conversions
|
// Unescape the asterisk to simplify further conversions
|
||||||
$row['word'] = str_replace('\*', '*', preg_quote($row['word'], '#'));
|
$row['word'] = str_replace('\*', '*', preg_quote($row['word'], '#'));
|
||||||
|
|
||||||
// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
|
// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
|
||||||
$row['word'] = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*(?=[\p{Nd}\p{L}_])#iu', '#^\*#', '#\*$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $row['word']);
|
$row['word'] = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*+(?=[\p{Nd}\p{L}_])#iu', '#^\*+#', '#\*+$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $row['word']);
|
||||||
|
|
||||||
// Generate the final substitution
|
// Generate the final substitution
|
||||||
$censors['match'][] = '#(?<![\p{Nd}\p{L}_-])(' . $row['word'] . ')(?![\p{Nd}\p{L}_-])#iu';
|
$censors['match'][] = '#(?<![\p{Nd}\p{L}_-])(' . $row['word'] . ')(?![\p{Nd}\p{L}_-])#iu';
|
||||||
|
|
Loading…
Add table
Reference in a new issue