preg_replace(PHP 3>= 3.0.9, PHP 4) preg_replace - выполняет поиск и замену регулярного выражения. Описаниеmixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit]) Ищет в subject совпадения с pattern и замещает их replacement. Если limit специфицирован, то замещаются только limit совпадений; если limit опущен или равен -1, замещаются все совпадения. Replacement может содержать ссылку в форме \\n или (начиная с PHP 4.0.4) $n, где последняя форма предпочтительнее. Каждая такая ссылка замещается текстом, захваченным n'ным патэрном в скобках. n может быть от 0 до 99, а \\0 или $0 ссылаются на текст, совпавший со всем патэрном. Открывающие скобки подсчитываются слева направо (начиная с 1) для получения количества захватывающих субпатэрнов. Если совпадения найдены, возвращается новый subject, иначе subject возвращается без изменений. Каждый параметр preg_replace() может быть массивом. Если subject это массив, то поиск и замена выполняются в каждом вхождении subject, return-значение также будет массивом. Если pattern и replacement являются массивами, то preg_replace() принимает значение из каждого массива и использует их для выполнения поиска и замены в subject. Если replacement имеет меньше значений, чем pattern, то для оставшихся значений для замены используется пустая строка. Если pattern это массив, а replacement это строка, то эта замещающая строка используется для каждого значения pattern. Обратное не будет иметь смысла. Модификатор /e делает так, что preg_replace() рассматривает
параметр replacement как PHP-код после выполнения соответствующей
замены ссылок. Этот пример даст:
См. также preg_match(), preg_match_all() и preg_split(). |
||||||||||
|
||||||||||
Эти отличия даны относительно Perl 5.005.
По умолчанию пробельным символом считается любой таковой символ, распознаваемый функцией isspace() библиотеки С, хотя возможна компиляция PCRE с альтернативной таблицей типов символов. Нормально isspace() распознаёт space, formfeed, newline, carriage return, horizontal tab и vertical tab. Perl 5 больше не включает vertical tab в набор пробельных символов. Мнемоника \v, которая долгое время была в документации Perl, фактически никогда не распознавалась. Однако сам по себе этот символ рассматривался как пробельный как минимум до версии 5.002. В 5.004 и 5.005 он не соответствует \s.
PCRE не разрешает повторение квантификаторов или опережающих утверждений/lookahead assertions. Perl разрешает их, но они имеют другое значение. Например, (?!a){3} не утверждает, что три последующие символа не "a". Оно просто утверждает три раза, что следующий символ не "a".
Захваты субпатэрнов, которые возникают внутри отрицательного опережающего утверждения, вычисляются, но их вхождения в векторе смещения никогда не устанавливаются. Perl устанавливает свои числовые переменные из любого такого патэрна, который совпадает до неудачи утверждения при совпадении с чем-либо (продолжая таким образом), но только если негативное опережающее утверждение содержит одну ветвь.
Хотя двоичные нулевые символы поддерживаются в строке-субъекте, они не допускаются в строке патэрна, поскольку он передаётся как нормальная C-строка, оканчивающаяся нулём. Замена "\\x00" может использоваться в патэрне для представления бинарного нуля.
| |