Как перейти со split на preg_split

caesar-deluxe

Постоялец
Регистрация
22 Авг 2012
Сообщения
60
Реакции
12
Появляется сообщение об ошибке - Deprecated: Function split() is deprecated in common/classes/class_Parser.lib.php on line 149
Вот кусок кода:

147: public function extractPhpdoc($paragraph)
148: {
149: $lines = split($this->PHP_BASE["break"], $paragraph);
150: $phpdoc = "";
151: reset($lines);
152: while(list($k, $line) = each($lines))
153: {
154: $line = trim($line);
155: if (""==$line)
156: continue;
157: if ("*" == $line[0])
158: $phpdoc.= trim(substr($line, 1))."\n";
159: else
160: $phpdoc.= $line."\n";
161: }
162: return substr($phpdoc, 0, -1);
163: }

Пробовал привести строку 149 к виду:
$lines =preg_split($this->PHP_BASE/["break"]/, $paragraph); - не работает
$lines =preg_split($this->PHP_BASE[/"break"/], $paragraph); - не работает

Кто нибудь знает как бороться с этими граблями?
 
Так должно работать:
PHP:
$lines = preg_split('/'.$this->PHP_BASE["break"].'/', $paragraph);
 
Работает, но с небольшим багом:
строку вида
$LANG['text_alarm'] = 'Alarm';
приводит к виду
$LANG['text_alarm'] = 'Alarm'
то есть обрезает ; в конце строки
 
Последнее редактирование:
Есть "читерство" - explode вместо split использовать.
 
Есть "читерство" - explode вместо split использовать.
Тогда попробуй в строке
list($year, $month, $day, $hrs, $min, $sec) = split('[ \:- ]', $date);
"explode вместо split использовать" и получишь новые грабли.
только preg_split выручит в этой ситуации, вот так:
list($year, $month, $day, $hrs, $min, $sec) = preg_split('/[: -]/', $date);

Ох уж эти "читеры"
 
Тогда попробуй в строке
list($year, $month, $day, $hrs, $min, $sec) = split('[ \:- ]', $date);
caesar-deluxe, вообще для такого специально есть Для просмотра ссылки Войди или Зарегистрируйся

А explode имеет смысл использовать там, где в качестве разделителя может быть один вариант (символ или строка из нескольких символов) - такое встречается довольно часто. Естественно, что для разбивки по регулярному выражению эта функция не подойдёт.

p.s. регулярки в разделителях мне встречались как правило в сочетании с функцией preg_split, а в обычном split почти всегда стоял 1 символ ('|', ':')
 
Последнее редактирование:
Назад
Сверху