[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вырезать кусок из html кода
kamwork
Добрый день!

Помогите пожалуйста разобраться.

Есть файл с html кодом, мне нужно вырезать из него кусок, который начинается с

<a href='../../../../../goods/section_2/


а заканчивается на

<div align="center" id="full_img_poln">


при этом этот кусок входить не должен.

Пробовал так:

preg_match_all("#<a href=\'../../../../../goods(.+)<div align=\"center\" id=\"full_img_poln\"></div>#",$string,$match);


но что то это не то :(
AllesKlar
если с регулярками не получается, делай без них:
strpos()
substr()


_____________
[продано копирайтерам]
OleKh
$html= '<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div><div align="center" id="full_img_poln">abc</div><div align="center" id="full_img_poln">dfg</div><div align="center" id="full_img_poln">hijk</div>';


preg_match('#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*>)<div align="center" id="full_img_poln">#isu',
$html, $match );

echo '<pre>'.print_r($match[1] , 1).'</pre>';
kamwork
Цитата (OleKh @ 27.03.2014 - 23:18)
$html= '<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div><div align="center" id="full_img_poln">abc</div><div align="center" id="full_img_poln">dfg</div><div align="center" id="full_img_poln">hijk</div>';


preg_match('#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*>)<div align="center" id="full_img_poln">#isu',
$html, $match );

echo '<pre>'.print_r($match[1] , 1).'</pre>';



Спасибо! Но тоже не работает sad.gif
OleKh
echo '<pre>'.print_r($match[1] , 1).'</pre>';



<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div>

<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div><div align="center" id="full_img_poln">abc</div><div align="center" id="full_img_poln">dfg</div><div align="center" id="full_img_poln">hijk</div>'
kamwork
Цитата (OleKh @ 27.03.2014 - 23:46)
echo '<pre>'.print_r($match[1] , 1).'</pre>';



<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div>

<a href="../../../../../goods/section_2/">link</a><div align="center" id="full_img_poln1">dfg</div><div align="center" id="full_img_poln2">dfg</div><div align="center" id="full_img_poln">abc</div><div align="center" id="full_img_poln">dfg</div><div align="center" id="full_img_poln">hijk</div>'

Извеняюсь, это я торможу.. тот пример работал.

Но я допустим меняю предложеную вами строку на более простую

<a href="../../../../../goods/section_2/index.html" class="pathway">Главная</a>Bla bla bla<div align="center" id="full_img_poln">


и уже ни чего не работает. Мозг уже кипит %)
OleKh
preg_match('#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*)<div align="center" id="full_img_poln">#isu', 
$html, $match );
kamwork
Цитата (OleKh @ 28.03.2014 - 00:28)
<pre class="sh_sourceCode" rel="php"><span class="sh_function">preg_match</span><span class="sh_symbol">(</span><span class="sh_string">'#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*)<div align="center" id="full_img_poln">#isu'</span><span class="sh_symbol">,</span>
<span class="sh_variable">$html</span><span class="sh_symbol">,</span> <span class="sh_variable">$match</span> <span class="sh_symbol">);</span></pre>

Спасибо огромное!

У меня еще один вопрос, у функции preg_match имеет ограничение по длине строки. Погуглил, нашел что меняется это через pcre.backtrack_limit установил его на порядок выше, денвер перезагрузил, но увы длинную строку так и не обрабатывает, например на такой:

Цитата
<a href="../../../../../goods/section_2/index.html" class="pathway">Главная</a>sdfsdfsdfsdf sdfsdfsdfsdfsdfsdfsdfs dfsdfsdfsdfsdfsdfsdfsdf sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs dfsdfsdfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs dfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs dfsdfsdfsdfsdfsdfsdfsdfsdfsdfs dfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf sdfsdfsdfsdfsdfsdfsdfsdfsdfsd fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf<div align="center" id="full_img_poln"></div>


просто выдает браузер ошибку

Невозможно загрузить веб-страницу, так как не поступили данные от сервера.
Код ошибки: ERR_EMPTY_RESPONSE
OleKh
Вероятно, что ошибка ERR_EMPTY_RESPONSE, не имеет отношения к pcre.backtrack_limit, т.к. по тексту "Невозможно загрузить веб-страницу, так как не поступили данные от сервера." можно сделать вывод, что данные не загружены с сервера и до функции preg_match() не добрались smile.gif. Тот кусок html, что в примере, капля в море, по сравнению с тем, что установлено в pcre.backtrack_limi, поэтому лучше вернуть значение как было.
kamwork
Цитата (OleKh @ 28.03.2014 - 01:05)
Вероятно, что ошибка ERR_EMPTY_RESPONSE, не имеет отношения к pcre.backtrack_limit, т.к. по тексту "Невозможно загрузить веб-страницу, так как не поступили данные от сервера." можно сделать вывод, что данные не загружены с сервера и до функции preg_match() не добрались :). Тот кусок html, что в примере, капля в море, по сравнению с тем, что установлено в  pcre.backtrack_limi, поэтому лучше вернуть значение как было.

Тогда не понимаю, в чем еще ошибка может быть :(

Вот код:

$html = '
<a href="../../../../../goods/section_2/index.html" class="pathway">Главная</a>sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs
dfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf
sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsd
fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf
sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs
dfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsd
fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf
sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsd
fsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf<di v align="center" id="full_img_poln"></div>'
;

preg_match('#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*)<div align="center" id="full_img_poln">#isu',
$html, $match );

echo '<pre>'.print_r($match[1] , 1).'</pre>';



он не работает, а этот работает:


$html = '
<a href="../../../../../goods/section_2/index.html" class="pathway">Главная</a>sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs
dfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf
sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs<div align="center" id="full_img_poln"></div>'
;

preg_match('#(<a href="../../../../../goods/[^/]+(?:(?!(?:<div align="center" id="full_img_poln">)).)*)<div align="center" id="full_img_poln">#isu',
$html, $match );

echo '<pre>'.print_r($match[1] , 1).'</pre>';
Быстрый ответ:

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