[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите подправить preg_match
soniclord
preg_match("/(?<=<div style=\"margin-bottom: 5px;\">).+(?=<\/div>)/s", $html, $match);
- выводит все начиная от <div style=\"margin-bottom: 5px;\"> и заканчивая пследним дивом.
что мне нужно написать чтобы он заканчивал на 3м закрывающем диве (</div>)?



Спустя 45 минут, 14 секунд (21.09.2010 - 16:22) DedMorozzz написал(а):
ой ой ой. Решение очень не удачное. Лучше скажи, что надо сделать.
Предоставь что есть и что надо получить.

Спустя 19 минут, 47 секунд (21.09.2010 - 16:42) DedMorozzz написал(а):
По тому, что понял:
$a="<div style=\"margin-bottom: 5px;\">ZZZZZ</div>FFFF</div>aaaaaaaaaaa</div>cccc</div>wwww";

preg_match ('#<div style=\"margin-bottom: 5px;\">((.*?</div>){2}(.*?))</div>#',$a,$matches);
echo htmlspecialchars($matches[1]);//ZZZZZ</div>FFFF</div>aaaaaaaaaaa

Спустя 3 минуты, 26 секунд (21.09.2010 - 16:45) soniclord написал(а):
нужно стянуть заголовки (Власть советников), и подзаголовок (// Лидером приморской «Справедливой России» избран подчиненный мэра-единоросса)
и ссылки нужно подправить, чтобы были абсолютными.
сделал:

header("Content-Type: text/html;charset=UTF-8");
$html = file_get_contents('http://www.kommersant.ru/regions/region.aspx?regionID=27')
or die ("Can't get content");
$html = iconv("Windows-1251", "UTF-8", $html);

preg_match_all("/(?<=<div style=\"margin-bottom: 5px;\">).+(?=<\/div>)/isU", $html, $match1,PREG_PATTERN_ORDER);
preg_match_all("/(?<=<div style=\"margin-bottom: 3px;\">).+(?=<\/div>)/isU", $html, $match2,PREG_PATTERN_ORDER);
for ($i = 0; $i < count($match1[0]); $i++) // цикл по всем, извлеченным из стартовой страницы, адресам
{

preg_match_all("/\<a\ href\=\"(.*)\"/U",$match1[0][$i],$mch);

for ($j = 0; $j < count($mch[0]); $j++){
echo '<a href="http://www.kommersant.ru/'.$mch[1][$j].'">'.$match1[0][$i].'</a><br>';
}

}


#print_r($match2);
#echo '<div style="margin-bottom: 5px;">'.$match[0].'</div>';

Спустя 1 минута, 1 секунда (21.09.2010 - 16:46) soniclord написал(а):
может я брезжу и есть решение проще?

Спустя 37 секунд (21.09.2010 - 16:47) DedMorozzz написал(а):
Не делай проверки вперёд/назад там, где можно без них. Они ОЧЕНЬ(!) медленные.
И решение которое выше написал - не подходит (не вникал пока что в твой код)?
И "<br>" правильно записывать так: "<br />". 1й вариант - не валидный

Спустя 40 минут, 14 секунд (21.09.2010 - 17:27) SlavaFr написал(а):
Цитата (DedMorozzz @ 21.09.2010 - 13:47)
И "<br>" правильно записывать так: "<br />". 1й вариант - не валидный

ничего подобного.
где видно, что он с xhtml работает? smile.gif

Спустя 7 минут, 38 секунд (21.09.2010 - 17:35) DedMorozzz написал(а):
http://validator.w3.org/ - пользуйся.
<br> - не валидно
<br /> - валидно.
И не поверишь - не очень редко один из пунктов проекта - что бы он проходил валидацию именно на этом сервисе.

Спустя 17 минут, 51 секунда (21.09.2010 - 17:53) SlavaFr написал(а):
ну попробуй там же

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<title>
Beschreibung der Seite</title>
</head>
<body>

test<br>test
</body>
</html>



а потом замени на <br /> и получиш прдупреждение, что именно <br /> неправильно.

повтoрюсь, что не где не сказано, что он с xhtml работает.
Быстрый ответ:

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