У меня есть массив регулярных выражений, которые я заменяю тем же символом. Как бы я использовал или "|" с моим регулярным выражением для уменьшения количества массивов? - PullRequest
0 голосов
/ 16 января 2020

У меня больше настроек в моих массивах, но для простоты я размещаю только те, с которыми я хочу сгруппировать, используя или "|".

$patterns = array();
$patterns[1] = "/(?:\:)/";
$patterns[2] = "/(?:\-_)/";
$patterns[3] = "/(?:\_-)/";
$replacements = array();
$replacements[1] = "-";
$replacements[2] = "-";
$replacements[3] = "-";
preg_replace($patterns, $replacements, $data['string']);

Я пробовал разные попытки с нет успеха Ниже приведена попытка сгруппировать нужный массив:

$patterns = array();
$patterns[1] = "/(?::|-_|_-|)/";
$replacements = array();
$replacements[1] = "-"

Все мои другие массивы имеют уникальные $ замены . Оставление исходной настройки работает так, как я хочу, но я просто хочу уменьшить количество массивов, сгруппировав эти 3 в 1. Это регулярное выражение на самом деле работает, как и предполагалось, но для моего сценария мне пришлось оставить исходную настройку, как было / есть. результаты из-за порядка замен. Запуск замены в одной группе дал странные результаты.

1 Ответ

1 голос
/ 17 января 2020

Поскольку замена такая же -, вы можете объединить все подходящие регулярные выражения с | и использовать более простую версию preg_replace:

$data['string'] = preg_replace('/(?::|-_|_-|)/', '-', $data['string']); 

Здесь (?::|-_|_-|) будет соответствовать : или -_ или _-.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...