Преобразование ereg_replace в preg_replace

Как я могу конвертировать:

ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", " ", $data);

в

preg_replace("......", " ", $data);

1 ответ

Решение

Все, что у вас есть в регулярном выражении, кажется действительным для регулярного выражения perl. Разница в том, что регулярные выражения Perl ожидают ограничивающие символы (определяемые первым символом) и необязательные флаги после второго ограничивающего символа (который я буду игнорировать, см. Страницу PHP для preg_match для их использования).

Другими словами, полный матч ^\d$ становится /^\d$/, где / это ограничивающий характер. Если вы начинаете с другого персонажа, он становится ограничивающим. Это полезно, как в вашем случае, когда обычный ограничительный характер / интенсивно используется в регулярном выражении, и вам не нужно избегать его. Например, /^\d$/ а также |^\d$| эквивалентны.

В этом конкретном случае вы можете использовать это как preg_replace:

preg_replace("|[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]|", " ", $data);
Другие вопросы по тегам