|
|
|
| есть файл menu.tpl
menu-navigation
menu-left
menu-right
|
мне нужно его пропарсить, чтоб получился ледующий массив
Array
(
[0] => navigation
[1] => left
[2] => right
)
|
сам парсер parsr.php
<?php
$menu = file_get_contents ("menu.tpl");
$position = explode("menu-", $menu);
echo "<pre>";
print_r ($position);
echo "</pre>";
?>
|
на выходе получается следующий массив:
Array
(
[0] =>
[1] => navigation
[2] => left
[3] => right
)
|
не могу понять откуда здесь появился пустой элемент массива, как сделать, чтоб его не было? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:03)
| | Потому что перед разделителем "menu-" у вас нет никаких символов, потому и пустой элемент. | |
|
|
|
|
|
|
|
для: Gubichev
(29.12.2010 в 15:12)
| | понял, а как убрать из массива пустой элемент? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:17)
| | unset | |
|
|
|
|
|
|
|
для: psychomc
(29.12.2010 в 15:21)
| | т.е. специальной функции нет, которая ишет и удаляет его? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:23)
| | Что значит "специальной"? | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 15:30)
| | ну встроенной в язык php
сделал так:
for ( $i=0; $i<count($position); $i++)
{
if (empty ($position[$i]))
{
unset ($position[$i]);
}
}
|
и еще вопрос, а как обрезать длинную строку например по некоторому набору символов? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:41)
| | Встроено что? Что оно должно делать? Зачем цикл? | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 15:46)
| | а как без цикла перебрать весь массив? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:47)
| | А вы разве в цикле занимаетесь преобразованием массива? Вы зачем создавали тему "как научиться думать программистически"? Думайте. | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 15:49)
| | это в explode нужно третий аргумент ввести? | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 15:55)
| | Не знаю о каком аргументе вы ведете речь, а тем более чем он может помочь. | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 16:00)
| | еще есть функция in_array | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 16:05)
| | И что? Есть еще масса функций работы с массивами, но зачем их тут перечислять? | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 16:11)
| | я спрашиваю она подойдет? я просто не понимаю, а как она вернет ключ элемента массива
вот нашел, правда немного грамоздко
if (array_search(NULL, $position));
{
$key = array_search(NULL, $position);
unset ($position[$key]);
}
|
| |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 16:13)
| | Вы хотите научиться программировать, для этого собираетесь научиться мыслить соответственно. Зачем тогда вы спрашиваете подойдет она или нет меня? Нет, не подойдет, и array_search тут вообще не нужен.
Прежде чем городить все это, вы лучше проанализируйте свой файл, и подумайте сколько пустых значений будет в полученном массиве, и где будут они расположены в нем. Да и вообще, может быть лучше иначе свои шаблоны описывать, чтобы не заниматься ненужным? | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 16:27)
| | тут бес пустого значения не обойтись, хотя можно попробовать и без него, это идея :)
теперь вы меня всегда будете пинать этим
Вы хотите научиться программировать )))
немного ненужных задачек решил, мозги поразмял, да я долго ломал голову над организацией файла, сейчас родилась идея, и все стало на места, спасибо! | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 16:32)
| | Вы уверены, что не обойтись?
К чему вообще нужен такой шаблон, из которого только имена чего-то получить можно, что гороздо логичнее держать в базе?
Я вас не пинаю, но думать надо, иначе бросайте все к чертовой матери и в швеи-мотористы. | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 16:34)
| | сим5 брутален 8-) | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 16:34)
| | вот как пойму, как надо думать иначе, там и буду :) | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 18:21)
| | Я бы посоветовал поглядеть в сторону функции preg_match_all()
Шаблон ^menu-(.*)$ довольно близко описывает то, что Вы хотите добыть.
Array ( [0] => navigation [1] => left [2] => right ) получается за два оператора, один из которых вызов функции.
Безо всяких циклов. И вызов функции - единственный. То есть никакие другие функции не нужны. | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 18:21)
| | Молча думать надо.
У вас не моет быть после explode пустых элементов ни в середине, ни в конце массива, если конечно вы сами текст не напишите этому сопутствующий. У вас только в начале может быть пустой элемент, а почему, вам ранее сказали. Это значит, что без всяких циклов можно сразу обращаться к элементу массива с индексом 0, чтобы его удалить. Это видно и из вывода массива, который вы делали, да и вообще сразу и ежу понятно.
Ничего тут заумного нет, надо просто думать, и для этого обыкновенных мозгов хватит, а не специальных программерских, достаточно только вникнуть в описание функции.
А вот что такое шаблон и для чего нужен он надо подумать основательно. | |
|
|
|
|
|
|
|
для: sim5
(29.12.2010 в 19:56)
| | да в процессе понимание приходит )) еще раз спасибо!
делать, ошибаться, переделывать )) | |
|
|
|
|
|
|
|
для: Bvz
(29.12.2010 в 18:21)
| | думаю что для начала надо не понять как думать или не думать, а просто досконально изучить язык. | |
|
|
|