Вот код, который я пытаюсь запустить:фиксированной длины регулярное выражение просмотра назад жалуется переменной длины 'назад
$str = 'a,b,c,d';
return preg_split('/(?<![^\\\\][\\\\]),/', $str);
Как вы можете видеть, регулярное выражение используется здесь:
/(?<![^\\][\\]),/
Это простой отрицательный lookbehind с фиксированной длиной для «впереди чего-то, что не является обратным слэшем, а затем что-то!».
Это регулярное выражение прекрасно работает на http://www.phpliveregex.com
Но когда я иду, и на самом деле попытка запустить приведенный выше код, я плюнул назад ошибку:
Warning: preg_split() [function.preg-split]: Compilation failed: lookbehind assertion is not fixed length at offset 13
Чтобы сделать дела хуже, товарищ программист протестировал код на своем сервере 5.4.24 PHP, и он работал нормально.
Это заставляет меня думать, что мои проблемы связаны с конфигурацией моего сервера, с которой у меня очень мало контроля. Мне сказали, что моя версия PHP, если 5.2. *
Есть ли способы обхода (альтернативы) для preg_replace(), которые могут не иметь этой проблемы?
При запуске кода действительно работает нормально и разбивает результаты. – hwnd
Возможно, не настоящий 5.2. Он работает для меня, и вы можете видеть, в каких версиях он терпит неудачу [здесь] (http://3v4l.org/PlBUB) (сбой в 4.3.0 - 4.4.4, 5.0.0 - 5.1.6). Имейте в виду, что вы используете версию _ancient_ PHP. – Wrikken
@Wrikken О, мой, никогда не знал о инструменте. Это замечательно.) – raina77ow