[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление лишнего
foXDEvil
Всем привет. Есть html код
<ul class="menu"><li class="parent item8"><div class="strelko"></div><a href="#" onclick="$('div.menu1').toggle('slow');">Автомобильные видео регистраторы</a><ul class="podnim"><div class="menu1menu2" style="display:none;"><li class="item9"><a href="/">Камеры переднего вида</a></li><li class="item10"><a href="/">Камеры заднего вида для грузовых</a></li><li class="item11"><a href="/">Камеры заднего вида для легковых</a></li></div></ul></li><li class="item5"><a href="/">Системы GPS навигации</a></li><li class="parent item6"><div class="strelko"></div><a href="#" onclick="$('div.menu2').toggle('slow');">Парковочная с/с</a><ul class="podnim"><div class="menu1menu2" style="display:none;"><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7">Мониторы авто</a></li></div></ul></li><li class="item12"><a href="/">Портативные</a></li></ul>	

нужно его обработать и получить

<ul class="menu"><li class="parent item8"><div class="strelko"></div><a href="#" onclick="$('div.menu1').toggle('slow');">Автомобильные видео регистраторы</a><ul class="podnim"><div class="menu1" style="display:none;"><li class="item9"><a href="/">Камеры переднего вида</a></li><li class="item10"><a href="/">Камеры заднего вида для грузовых</a></li><li class="item11"><a href="/">Камеры заднего вида для легковых</a></li></div></ul></li><li class="item5"><a href="/">Системы GPS навигации</a></li><li class="parent item6"><div class="strelko"></div><a href="#" onclick="$('div.menu2').toggle('slow');">Парковочная с/с</a><ul class="podnim"><div class="menu2" style="display:none;"><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7">Мониторы авто</a></li></div></ul></li><li class="item12"><a href="/">Портативные</a></li></ul>	


Пункты menu* потом будет больше. Это модуль меню джумлы. то меню что перед вами я получил с помощью кода расположенного ниже, если желаете нужным то можно переделать его

function modChrome_my_menu($module, &$params, &$attribs)
{
$menuha = $module->content;
$menuha = str_replace("<span>","",$menuha);
$menuha = str_replace("</span>","",$menuha);
$menuha = str_replace("</a><ul><li class=\"item","</a><ul class=\"podnim\"><li class=\"item",$menuha);
$menuha = str_replace("parent active item1","active_a",$menuha);
preg_match_all("<a href=\"/onclick_(.*?)_onclick\">",$menuha, $flolin);
$flolin = implode('', $flolin[0])."\n";
$flolin = str_replace("a href=\"/onclick_","",$flolin);
$flolin = str_replace("_onclick\"","",$flolin);
$flolin = str_replace("\n","",$flolin);
$menuha = str_replace("<a href=\"/onclick_","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.",$menuha);
$menuha = str_replace("_onclick","').toggle('slow');",$menuha);
$menuha = str_replace("<ul class=\"podnim\">","<ul class=\"podnim\"><div class=\"$flolin\" style=\"display:none;\">",$menuha);
$menuha = str_replace("</a></li></ul></li>","</a></li></div></ul></li>",$menuha);

if ($module->showtitle != 0) : ?>
<div style="margin-bottom: 3px;"><font class="menu_title"><?php echo $module->title;?></font></div>
<?php endif; ?>
<?php
echo $menuha; ?>
<?php

}




Спустя 6 часов, 21 минута, 53 секунды (21.08.2011 - 16:39) foXDEvil написал(а):
html код до обработки: (цель: выпадающее раскрывающиеся меню)
<ul class="menu"><li class="parent item8"><a href="/onclick_menu1_onclick"><span>Автомобильные видео регистраторы</span></a><ul><li class="item9"><a href="/"><span>Камеры переднего вида</span></a></li><li class="item10"><a href="/"><span>Камеры заднего вида для грузовых</span></a></li><li class="item11"><a href="/"><span>Камеры заднего вида для легковых</span></a></li></ul></li><li class="item5"><a href="/"><span>Системы GPS навигации</span></a></li><li class="parent item6"><a href="/onclick_menu2_onclick"><span>Парковочная с/с</span></a><ul><li class="item7"><a href="/index.php?option=com_content&view=frontpage&Itemid=7"><span>Мониторы авто</span></a></li></ul></li><li class="item12"><a href="/"><span>Портативные</span></a></li></ul>

Спустя 21 час, 21 минута, 11 секунд (22.08.2011 - 14:00) foXDEvil написал(а):
Вот пример работы скрипта. http://sb.ufahoster.ru С одним выпадающим меню всю шикарна но если делать больше то id в диве хавает все названия менюшек. Кто может помогите или может кто сможет предложить вариант получше?

Спустя 3 дня, 16 часов, 49 минут, 46 секунд (26.08.2011 - 06:50) foXDEvil написал(а):
И так маленько переделал и почти всё работает, страдает только регулярка, а с ней я не в ладах
function modChrome_my_menu($module, &$params, &$attribs)
{
$menuha = $module->content;
$menuha = str_replace("<span>","",$menuha);
$menuha = str_replace("</span>","",$menuha);
$menuha = str_replace("</a><ul><li class=\"item","</a><ul class=\"podnim\"><li class=\"item",$menuha);
$menuha = str_replace("parent active item1","active_a",$menuha);
$menuha = preg_replace("<a href=\"/onclick_(.*?)_onclick\">(.*?)</a><ul class=\"podnim\">","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.\\1').toggle('slow');>\\2</a><ul class=\"podnim\"><div class=\"\\1\" style=\"display:none;\">",$menuha);
$menuha = str_replace("</a></li></ul></li>","</a></li></div></ul></li>",$menuha);

if ($module->showtitle != 0) : ?>
<div style="margin-bottom: 3px;"><font class="menu_title"><?php echo $module->title;?></font></div>
<?php endif; ?>
<?php
echo $menuha; ?>
<?php

}


Вот этот кусок
$menuha = preg_replace("<a href=\"/onclick_(.*?)_onclick\">(.*?)</a><ul class=\"podnim\">","<div class=\"strelko\"></div><a href=\"#\" onclick=\"$('div.\\1').toggle('slow');>\\2</a><ul class=\"podnim\"><div class=\"\\1\" style=\"display:none;\">",$menuha); 
по ходу тут что та не так

Спустя 5 дней, 10 часов, 41 минута, 45 секунд (31.08.2011 - 17:32) soroka написал(а):
А зачем остальные телодвижения? здесь достаточно одного preg_replace

Спустя 17 часов, 34 минуты, 18 секунд (1.09.2011 - 11:06) soroka написал(а):
Вот решение вашей задачи, исходную строку я читал из файла, переделаете как вам угодно
<?php 

$subject = file_get_contents('subj.txt');

$pattern = "#onclick=\"\\$\('div.([a-z]{4}[0-9]{1,})'\).toggle\('slow'\);\">([\wа-яА-Я \/]{1,})<\/a><ul class=\"podnim\"><div class=\"(\w{1,})\"#";
$replacement = "#onclick=\"\\\$('div.\\1'\).toggle\('slow'\);\">\\2<\/a><ul class=\"podnim\"><div class=\"\\1\"#";

$result = preg_replace($pattern, $replacement, $subject);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.