У меня уже есть немного рабочего кода, но мне нужен кто-то, чтобы помочь объяснить почему это работает, если они могут!
Я использую PHP для замены чего-либо в строке, если это не аз, AZ, 0-9, запятая, точка с запятой, подчеркивание или дефис (которые в конечном итоге должны представлять либо одно имя пользователя, либо запятую. / список имен пользователей, разделенных точкой с запятой).
Следующее работает:
$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);
Но следующее не работает:
$data = preg_replace('/[^a-zA-Z0-9_-,;]/s', '', $data);
Почему это будет работать только тогда, когда запятая и точка с запятой стоят в начале? Помещение их в конец, кажется, ломает вещи (это то, что я пробовал изначально, когда наткнулся на / [^ a-zA-Z0-9 _-] / s.
Кроме того, я также использую следующее, чтобы обрезать любые конечные точки с запятой (множественное число) или запятые (множественное число), и кто-то может предложить более эффективный и / или элегантный способ сделать это?:
if(preg_match('/;$/', $data))
{
$data = rtrim($data, ';' );
}
if(preg_match('/,$/', $data))
{
$data = rtrim($data, ',' );
}
Спасибо за любую помощь :)