|
|
|
| http://sh opxml.com/EXPORT/xml.php?shop=336
Видимо, до конца я так и не разобрался с регулярными, поэтому и тут споткнулся.
Собственно, получить это все надо в удобный массив. Но содержимое тегов, а не вместе с ними.
Аттрибуты тоже нужны...
p.s. Мне кажется, что регулярные менее громоздки, чем xml, поэтому, наверное, тут их выгоднее использовать? | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.10.2005 в 22:03)
| | Я его пока не переварил, но думаю это возможно... | |
|
|
|
|
|
|
|
для: cheops
(10.10.2005 в 21:11)
| | Если процесс кодоварения не очень затруднит - было бы очень приятно... | |
|
|
|
|
|
|
|
для: Shorr Kan
(11.10.2005 в 08:35)
| | Кхм? :) | |
|
|
|
|
|
|
|
для: Shorr Kan
(12.10.2005 в 20:19)
| | Исследовал, но ещё не добрался до разбора... никак с духом не соберусь составить регулярное выражение... уж больно дофига там всего :)))
PS Кстати, а что это за файл и откуда он? | |
|
|
|
|
|
|
|
для: cheops
(12.10.2005 в 20:48)
| | Партнерка, насколько я понял. Человек создает магазин, развивает и продает товары. Но на самом деле - продает ЭТОТ магазин, что вы видели. Ну а процент - владельцу сайта, откуда заказали. | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.10.2005 в 22:03)
| | В PHP5 есть чудесная вещь, SimpleXML
Для PHP4 есть аналог, но я не изучал его, http://minixml.psychogenic.com/ | |
|
|
|
|
|
|
|
для: isset
(13.10.2005 в 01:26)
| | Спасибо, только xml нужен только для xml, а регулярные нужны для всего. Благодаря решениям cheops'а я плавно и в рабочей манере начинаю изучать регулярные. Поэтому-то, я и ожидаю решения и в данном случае :) *скромно разглядывая облака* | |
|
|
|
|
|
|
|
для: Shorr Kan
(18.10.2005 в 14:12)
| | Ещё не добрался :))) | |
|
|
|
|
|
|
|
для: cheops
(18.10.2005 в 14:45)
| | А облаков много, так что это не страшно. | |
|
|
|
|
|
|
|
для: Shorr Kan
(19.10.2005 в 16:40)
| | Нет, теперь там сплошное облако, разглядывать просто неинтересно.
Это я так напоминаю... :) | |
|
|
|
|
|
|
|
для: Shorr Kan
(26.10.2005 в 15:59)
| | Честно говоря, мне в составлении этой регулярки - действительно нужна помощь. А вернее - помощь нужна в работе над этим проектом - помощь именно в виде предоставления готового регулярного выражения. Которое, разумеется, я потом буду анализировать и пытаться понимать. Но на данном этапе - делать мне дальше очень много, а ступор весь - в остутствии возможности парсинга. Я бы мог это делать обычными строковыми функциями, но в итоге они работают медленнее с подобной структурой. | |
|
|
|
|
|
|
|
для: Shorr Kan
(29.10.2005 в 02:57)
| | /*Посмотрел ещё раз*/ Блин больно уж он здоровый гад... может мы его по частям как начнём пилить, сначала одну часть вытащим, потом будем усложнять регулярное выражение? | |
|
|
|
|
|
|
|
для: cheops
(29.10.2005 в 14:30)
| | Да запросто. Итог-то нужен простой - нужно иметь переменные из каждого раздела. Описание товара, его цена, и так далее. Т.е., чтобы в нужном месте можно было вставить описание, в другом - цену, в третьем - название. Собственно, вероятно это будет легче разобрав массив несколько раз - за первый проход вытащить цену, за второй - цену... Хотя, это наверное дольше будет при обработке... | |
|
|
|
|
|
|
|
для: Shorr Kan
(29.10.2005 в 23:17)
| | По продуктам можно пройтись следующим образом
<?php
$content = file_get_contents("xml.xml");
$pattern = "|<product order=\"([^\"]+)\"[\s]+ID=\"([^\"]+)\"[\s]+categoryID=\"([^\"]+)\"[\s]+time_available=\"([^\"]+)\" in_stock=\"([^\"]+)\"[\s]+is_new=\"([^\"]+)\"[\s]+manufacturer=\"([^\"]+)\"[\s]+url=\"([^\"]*)\"[\s]+weight=\"([^\"]+)\" quantity=\"([^\"]+)\"[\s]+num_choosed=\"([^\"]+)\"[\s]+price=\"([^\"]+)\"[\s]+opt1=\"([^\"]+)\" price1=\"([^\"]+)\"[\s]+opt2=\"([^\"]+)\"[\s]+price2=\"([^\"]+)\"|isU";
preg_match_all($pattern,$content,$out);
echo "<pre>";
print_r($out);
echo "</pre>";
?>
|
PS Пробелы заменить на [\s]+ | |
|
|
|
|
|
|
|
для: cheops
(30.10.2005 в 23:38)
| | А у меня в выдаче:
Array
(
[0] => Array
(
)
[1] => Array
(
)
[2] => Array
(
)
[3] => Array
(
)
[4] => Array
(
)
[5] => Array
(
)
[6] => Array
(
)
[7] => Array
(
)
[8] => Array
(
)
[9] => Array
(
)
[10] => Array
(
)
[11] => Array
(
)
[12] => Array
(
)
[13] => Array
(
)
[14] => Array
(
)
[15] => Array
(
)
[16] => Array
(
)
)
|
p.s. А нельзя ли где-нибудь галочку поставить, чтобы письма с форума приходили, если кто-то написал в теме, где человек когда-то писал? | |
|
|
|
|
|
|
|
для: Shorr Kan
(01.11.2005 в 09:14)
| | Хм... а файл тот же самый?
PS Пока нет, но в ближайшее время планируется ввести RSS-канал на каждую тему - можно будет следить за ответами в выбранных темах. | |
|
|
|
|
|
|
|
для: cheops
(01.11.2005 в 12:57)
| | Абсолютно тот же самый, только вместо file_get_contents("xml.xml"); - я использовал file_get_contents("ссылку, которую давал, с поправкой пробела");
Что, собственно, разумеется, так как файл-то - не локальный, а удаленный. Именно оттуда, с того сервера. | |
|
|
|
|
|
|
|
для: Shorr Kan
(01.11.2005 в 16:18)
| | Хм... а если сохранить файл на локальный диск - тоже ничего не отображает? Попробуйте скрипт в аттаче... | |
|
|
|
|
|
|
|
для: cheops
(01.11.2005 в 23:14)
| | А у меня этот xml-файл (оттуда... С сервера) не сохраняется. Совершенно. Попробовал и IE 5 , и IE 6 (ну все что есть...). Реакции - ноль. В любых форматах пытался сохранить.
Что касается скрипта - да, точно такой. Только URL, вместо имени файла. | |
|
|
|
|
|
|
|
для: Shorr Kan
(02.11.2005 в 04:48)
| | Дело в том, что я при выкладывании скрипта в форум, чтобы не портить страницу - несколько его порезал - попробуйте тот который в архиве - он исходный. | |
|
|
|
|
|
|
|
для: cheops
(02.11.2005 в 12:10)
| | Да, вы правы, сработало. Но теперь СПЛОШНЫЕ цифры в выдаче. Я просто ошарашен.
Я так понимаю, что $out там имеет с [0] до [16] . Вы не могли бы поясняловку написать к каждому индексу массива - что это из целевого файла?
Я извиняюсь за... непонятливость, но просто столько цифр я еще никогда в жизни не видел... | |
|
|
|
|
|
|
|
для: Shorr Kan
(02.11.2005 в 19:13)
| | :))) Да хорошо, что мы по частям стали разбирать - в конце концов цифр будет в несколько раз больше... Это регулярное выражение находит блок
<product order="52" ID="7890" categoryID="102"
time_available="1118379600" in_stock="1" is_new="0"
manufacturer="0" url="" weight="5.5"
quantity="1000000" num_choosed="4"
price="69.99" opt1="0" price1="0" opt2="0" price2="0">
|
[0] - order
[1] - ID
[2] - categoryID
...
[16] - price2 | |
|
|
|
|
|
|
|
для: cheops
(02.11.2005 в 19:30)
| | Пересчитал по пальцам - получилось 16. Но я считал как человек, начиная с "раз". А у нас массив начинается с нуля. У шестеренкокрута - 17 результатов, а у меня 16. Я попробовал даже по пальцам считать. Откуда лишние детали взялись? Или куда у меня подевались недостающие?
Попробуем посчитать его методом, начиная с нуля. Может быть что-то иное получится...
order (ноль)
ID (один)
categoryID (два)
time_available (три)
in_stock (четыре)
is_new (пять)
manufacturer (шесть)
url (семь)
weight (восемь)
quantity (девять)
num_choosed (десять)
price (одиннадцать)
opt1 (двенадцать)
price1 (тринадцать)
opt2 (четырнадцать)
price2 (пятнадцать)
хмм? Где "шестнадцать"? | |
|
|
|
|
|
|
|
для: Shorr Kan
(03.11.2005 в 03:14)
| | Ой нет...
[1] - order
[2] - ID
[3] - categoryID
...
[16] - price2
так как 0 - это всё регулярнове выражение, а 1, 2, 3, ..., 16 соответствует круглым скобкам. | |
|
|
|
|
 48 Кб |
|
|
для: cheops
(03.11.2005 в 13:12)
| | Отлично. Далее, в выдаче я вижу $out[0] и $out[2] , а где $out[1] ?
Как я понял, $out[0][0] использовать не надо, надо начиная с $out[0][1] . А вот $out[2][0] - как раз используемое... это ID самого первого product . Что-то я логики не схватываю.
p.s. То что у меня в выдаче - я присобачил... | |
|
|
|
|
|
|
|
для: Shorr Kan
(03.11.2005 в 15:06)
| | Дур дом :))) А куда делось... я гляжу ещё и 16 не хватает... | |
|
|
|
|
|
|
|
для: cheops
(03.11.2005 в 21:37)
| | Риторический вопрос - ну неужели нельзя было сделать человеческий файл для разбора? Построчные данные - и вперед... разделитель - "|" ... Красотища. Нет, намутили.
Так. Ну раз данные пропадают какие-то - значит нужна проверка на их существование. И если нету - весь этот массив не использовать. Видимо так... Ладно, буду думать.
А со следующим блоком? | |
|
|
|
|
|
|
|
для: Shorr Kan
(04.11.2005 в 11:44)
| | Вообще это не нормально, а у вас все модификаторы в регулярном выражении "isU" - s никуда не задевалась? | |
|
|
|
|
|
|
|
для: cheops
(04.11.2005 в 13:17)
| | Конечно нет - я вообще ничего, кроме цели file_get_contents - не менял, просто ваш файл запустил. Смотрите файл...
================
О, а я похоже понял. У него там встречаются местечки, где пустое значение. Ну например, есть блок, где url="" . Это никак не может влиять? | |
|
|
|
|
|
|
|
для: Shorr Kan
(05.11.2005 в 08:07)
| | Может? | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.11.2005 в 12:59)
| | Что-то пропустил ваш предыдущий вопрос... вообще говоря не должно, так как у нас стоит любое число символов *... В этом случае, если бы не было соответствия, регулярное выражение не реагировало бы вообще на всю товарную позицию. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2005 в 13:06)
| | В любом случае - выхода нет. Раз уж так парсит... ПРидется проверку делать, как я говорил. Может быть, тогда дальнейшие блоки?.. | |
|
|
|
|
|
|
|
для: Shorr Kan
(09.11.2005 в 22:52)
| | Кстати, может у вас необходима настройка локали, как в теме http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=6084?
PS Эта... давайте как нибудь в новую тему перебираться :))), а то эта уже длинная... | |
|
|
|