Во-первых, как уже упоминалось в другом месте, вы, вероятно, следует использовать str_replace(), а не регулярное выражение для простых случаев, как в вашем примере.
Теперь, быстрые объяснения о регулярных выражениях в PHP:
Как ясно уже знает, ereg_ * функция теперь осуждается в PHP, и вы должны использовать preg_ * функцию вместо.
Основное различие между двумя наборами функций - это тип регулярного выражения, которое они используют. Функции ereg используют регулярное выражение в стиле POSIX, в то время как функции preg используют регулярное выражение PERL. Разработчики PHP решили стандартизировать регулярное выражение в стиле PERL, поэтому функции ereg устарели.
Я упоминаю все это, потому что полезно понимать различия между двумя типами регулярных выражений при переходе от одного к другому.
По большей части они на самом деле очень похожи - наиболее распространенные коды регулярных выражений работают одинаково между ними. Например, ^
и $
одинаковы в обоих случаях, обозначая якоря для начала и конца строки.
Там, где они отличаются друг от друга, функции preg не поддерживают многословные классы символов, поддерживаемые ereg.Поэтому, если у вас есть какие-либо eregs, которые включают коды, такие как [:digit:]
или [:alpha:]
, тогда у вас будет больше работы по их преобразованию. Тем не менее, они все еще могут быть преобразованы.
Есть еще несколько отличий между ними, но если вы не выполняете сложные выражения (и это не похоже на это), вы вряд ли столкнетесь с какими-либо другими проблемами, конвертирующими эти два стиля.
Кроме этого, существует большая разница в том, что preg требует символа разделителя на каждом конце строки регулярного выражения, чтобы обозначить, что это регулярное выражение. (обычно это косая черта, но может быть почти любым символом, если на обоих концах он одинаковый). Это не то же самое, что и^и $, поэтому ваше замечание об их замене неверно; вам все равно нужны^и $, а также косые черты.
Поэтому: для преобразования кода Ерег как это: '^xyz$'
, вы бы просто добавить косую черту, например, так: '/^xyz$/'
Надежда, что помогает.
[править]
Просто быстро редактировать, чтобы дать вам некоторый дополнительный материал:
Оба эти находятся в моих постоянных закладок.
Спасибо за подробный ответ! Есть несколько применений '[: space:]' в регулярных выражениях в функции почтового индекса, которые, по-видимому, я должен преобразовать в '\ s'? – bcmcfc
[: space:] можно преобразовать в ... uh ... пробельный символ. хе-хе. Легко, а? См. Также ссылки ссылки, которые я добавил к моему основному ответу. – Spudley
D'oh! У меня на самом деле была распечатанная (покрытая кофе) распечатка этого листа читов рядом со мной, но без правильного понимания ... это просто обман! ;-) – bcmcfc