regex — Как я могу разделить пользовательский разделитель, но экранировать также в PHP?

У меня есть строка здесь.

Actual_underscore_looks_like_\_

Вот пример кода, который должен заменить все подчеркивания в строке пробелами:

// Use underscores as a delimiter but allow for escaping underscores
$string = "Actual_underscore_looks_like_\_";
echo str_replace("_"," ",$string);

Тем не менее, это возвращает Actual underscore looks like \, я хочу Actual underscore looks like _, Кроме того, я мог бы хотеть показать ¯\_(ツ)_/¯, Для этого моя входная строка может быть:

¯\\\_(ツ)\_/¯ Как я могу выполнить это преобразование текста в PHP?

1

Решение

Отрицательный взгляд позади (все подчеркивания, которым не предшествует обратный слеш), затем удалите escape:

$string = "¯\\\_(ツ)\_/¯";
$result = preg_replace('/(?<!\\\\)_/', ' ', $string);
$result = preg_replace('/\\\\(\\\\|_)/', '$1', $result);
echo $result;
// => Actual underscore looks like _
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector