Доброго времени суток. Есть динамический документ с пронумерованными по порядку строками. После отфильтровывания ненужных строк, порядок нумерации разумеется меняется. dataList[5] = {id: и т.д. ... dataList[232] = {id: и т.д. ... dataList[2156] = {id: и т.д. ... Первая строка должна начинаться с нуля - dataList[0] Количество строк всегда разное. Копаю Интернет уже два дня. Прошу помочь.
Это жаба. Но в данной ситуации это неважно. Документ обрабатываю в скрипте парсера, и на выходе необходимо пронумеровать строки по порядку. Иначе жаба не работает.
Пока нашел такой код Код (Text): $d = 'dataList[0'; for ($n=0; $n<6; $n++) { echo ++$d . PHP_EOL; } Выводит: dataList[1 dataList[2 dataList[3 dataList[4 dataList[5 dataList[6 Можно с помощью preg_replace временно убрать правую квадратную скобку во всех строках, но как произвести замену цифр на упорядоченные ни как не придумаю.
PHP: <?php $arr = ["] ={id: и т.д. ...","] ={id: и т.д. ...","] ={id: и т.д. ..."]; $a = "dataList["; $b = 0; foreach($arr as $d){ echo $a . $b++ . $d . "<br>"; } ?> HTML: dataList[0] ={id: и т.д. ... dataList[1] ={id: и т.д. ... dataList[2] ={id: и т.д. ...
Сделал так. Но первая строка под номером 1. А надо ноль. Код (Text): $content = preg_replace('|dataList(.*) = {id|', 'dataList = {id', $content); $content = preg_replace_callback('/dataList/', function ($m) { static $count = 0; return 'dataList' . $count++; }, $content); $content = str_replace('dataList','dataList[', $content); $content = str_replace(' = {id','] = {id', $content); Вывод: dataList[1] = {id: и т.д. ... dataList[2] = {id: и т.д. ... dataList[3] = {id: и т.д. ...
странно, по логике вроде должно работать. но можно чуть проще PHP: $content = preg_replace_callback('/dataList\[\d+\]/', function ($m) { static $count = 0; return 'dataList[' . $count++ .']'; }, $content);
Спасибо. Все работает и отсчет с нуля. Просто надо static $count = -1; --- Добавлено --- @runcore Ваш код красивее и правильнее. Его и поставил. Но и мой работал, чему я очень рад, так как сам нашел сперва выход из ситуации. Значит учусь потихоньку. Спасибо