Вырезать часть кода

Статус
В этой теме нельзя размещать новые ответы.

3onn

Новичок
Привет ВСЕМ! Есть html код и в нем div#test... Возможно ли средствами PHP вырезать html код этого DIV'a ?
 

3onn

Новичок
Дело в том что для этого использую jquery. Но тут такая ситуация что мне нужно передавать в функцию для того что-бы создать widget в wordpress.
PHP:
function sm_wp_plugin_widget() {
    $html = $_POST['html'];
    if(strlen($html) > 0) {
        sm_init();
        echo json_encode('ok');
    }
    else {
        echo json_encode('bad');
    }

    die();
}

add_action('wp_ajax_widget', 'sm_wp_plugin_widget');

function smOutput($html) {
    echo $html;
}

function widget_smSubscribeForm() {
    smOutput();
}

function sm_init()
{
    register_sidebar_widget(__('Sm subscribe form',"smartresponder"), 'widget_smSubscribeForm');
}

add_action("plugins_loaded", "sm_init");
В функцию smOutput нужно передать переменную $html. Вот и спрашиваю на счет того можно ли вырезать по средствам PHP или как может сделать это другим способом ?
 

Alhimik

Новичок
Если бы это был xml то можно было бы сделать так
PHP:
$xml->simplexml_load_string(filename.html);
//Перебираем все дивы и там где аттрибут id равен тест удаляем теги
foreach($xml->div as $div){
  if($div['id'] == 'test'){
    echo strip_tags($div->asXML());
  }else{
    echo $div->asXML();
 }
}
 

Alhimik

Новичок
Если нужно просто вырезать теги из строки
$html = "<tags><tg><tag>";
$html = strip_tags($html);
 

3onn

Новичок
Да конечно!
Это генератор форм. Сгенерированную форму нужно сохранять в виджет.
Пример формы:
PHP:
                    <form class="sr-box" method="post" action="https://smartresponder.ru/subscribe.html" target="_blank" name="SR_form" style="z-index: 1;width: 354px; border: 2px solid rgb(188, 188, 188); margin: 0 auto; margin-top: 60px; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; ">
                        <ul class="sr-box-list ui-sortable">
                            <li class="form-header" style="text-align: center; height: auto; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; border: 0px solid rgb(0, 0, 0); ">
                                <label class="header_title" style="height: auto; line-height: 25px; padding: 15px 25px; margin-top: 10px; font-size: 16px; color: rgb(0, 0, 0); font-family: arial; font-weight: bold; font-style: normal; ">Подписка на рассылку</label>
                                <input type="hidden" name="element_header" value="" style="font-family: Arial; color: rgb(0, 0, 0); font-size: 12px; font-style: normal; font-weight: normal; border: none; ">
                            </li>
                            <li class="fields" style="border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; height: 65px; text-align: center; background-position: initial initial; background-repeat: initial initial; ">																										 									
                                <label style="font-family: arial; color: rgb(0, 0, 0); font-size: 12px; font-style: normal; font-weight: normal; display: none; margin-top: 15px; " class="remove_labels">Ваше имя</label>
                                <input type="text" name="field_name_first" class="sr-required" value="Ваше имя" style="margin-top: 15px; background-image: none; font-family: arial; color: rgb(189, 189, 189); font-size: 13px; font-style: normal; font-weight: bold; border: 2px solid rgb(188, 188, 188); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; height: 47px; ">
                            </li>
                            <li class="fields" style="border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; height: 65px; text-align: center; background-position: initial initial; background-repeat: initial initial; ">
                                <label style="font-family: arial; color: rgb(0, 0, 0); font-size: 12px; font-style: normal; font-weight: normal; display: none; margin-top: 15px; " class="remove_labels">Ваш email-адрес</label>
                                <input type="text" name="field_email" class="sr-required" value="Ваш email-адрес" style="margin-top: 15px; background-image: none; font-family: arial; color: rgb(189, 189, 189); font-size: 13px; font-style: normal; font-weight: bold; border: 2px solid rgb(188, 188, 188); border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; height: 47px; ">
                            </li>
                            <li class="subscribe" style="border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; text-align: center; background-color: none; border: 0px; height: 110px; background-position: initial initial; background-repeat: initial initial; ">			
                                <input type="submit" name="subscribe"  value="Подписаться" style="cursor: pointer; background-image: none; font-family: arial; color: rgb(255, 255, 255); font-size: 15px; font-style: normal; font-weight: bold; border: 2px solid rgb(99, 129, 18); margin: 32px 0px 0px; width: 200px; background-color: rgb(153, 192, 48); height: 47px; background-position: 0% 50%; background-repeat: repeat repeat; ">
                            </li>
                        </ul>
					</form>
 

3onn

Новичок
не нужно ничего удалять. нужно вырезать это форму(все) из общего кода и вставить в функцию smOutput
 

Alhimik

Новичок
Вот тебе функция которая принимает большой html и отдает форму с атрибутом test. Я целую платную работу бесплатно сделал:)
PHP:
<?php
header("Content-type: text/html; charset=utf8");

function formFromHtml($html){
global $formFromHtml, $formOpen;

//Создаем парсер
$parser = xml_parser_create('utf-8');

$formFromHtml = '';
$formOpen = false;


//Функции обработки
function onStart($parser, $tag, $attributes){
global $formFromHtml, $formOpen;

	if($tag == 'FORM' and $attributes['id'] == 'test'){
		$formOpen = true;
	}
	
	if($formOpen == true){
		$formFromHtml .= $tag;
	}
}
function onEnd($parser, $tag){
global $formFromHtml, $formOpen;
	if($formOpen == true){
		$formFromHtml .= $tag;
	}
        if($tag == 'FORM' and $formOpen == true){
		$formOpen = false;
	}
	
}
function onText($parser, $data){
global $formFromHtml, $formOpen;
	if($formOpen == true){
		$formFromHtml .= $data;
	}

}

	
//Регистрация функций
xml_set_element_handler($parser, 'onStart', 'onEnd');
xml_set_character_data_handler($parser, 'onText');
//Запуск парсера
xml_parse($parser, "$xmlcod");

	return $formFromHtml;
}


?>
 

Alhimik

Новичок
Ну да логично У меня просто все мысле об xml :) Другое дело что автор сказал что ему нужна конкретная форма с атрибутом id=test
 

3onn

Новичок
Да но мне нужно этот код вырезать с странице а не с переменной $html...
 

Alhimik

Новичок
Насколько я понимаю этот код выводит страницу?
PHP:
function smOutput($html) {
    echo $html;
}
тогда нужно просто обработать эту переменную перед выводом
PHP:
function smOutput($html) {
    $begin = strpos($html,'<form');
    $end = strpos($html,'</form>')+7;
    echo substr($html,$begin,$end-$begin);   
}
 

WMix

герр M:)ller
Партнер клуба
я представляю как улетела форма гостевухи или заказа в корзине покупок.....
PHP:
    $begin = strpos($html,'<form');
    $end = strpos($html,'</form>')+7;
    echo substr($html,$begin,$end-$begin);
 

3onn

Новичок
Не не.
Функция smOutput для отображения.
А обращаюсь я sm_wp_plugin_widget... вот
А в smOutput нужно загнатьHTML код всей формы что выше. Код этой формы нужно спарсить либо как-то вырезать из html страницы. php функции и html код находятся в одном файле .php
 

Alhimik

Новичок
я представляю как улетела форма гостевухи или заказа в корзине покупок.....
PHP:
    $begin = strpos($html,'<form');
    $end = strpos($html,'</form>')+7;
    echo substr($html,$begin,$end-$begin);
PHP:
    $begin = strpos($html,'<form id="test" ');
    $end = strpos($html,'</form>')+7;
    echo substr($html,$begin,$end-$begin);
В чем проблема не пойму?
Не не.
Функция smOutput для отображения.
А обращаюсь я sm_wp_plugin_widget... вот
А в smOutput нужно загнатьHTML код всей формы что выше. Код этой формы нужно спарсить либо как-то вырезать из html страницы. php функции и html код находятся в одном файле .php
Хорошо
PHP:
$page = file_get_contents('page.php')
$begin = strpos($page,'<form id="test"');
    $end = strpos($page,'</form>')+7;
    $html = substr($page,$begin,$end-$begin);
А потом этот $html передать в функцию которую тебе надо
 

WMix

герр M:)ller
Партнер клуба
PHP:
<form id="НЕ ТЕСТ">...</form><form id="test">...</form>
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху