|
|
|
|
|
для: vladimir_sumy
(31.10.2007 в 12:29)
| | уберите совсем из выражения <img src=\"products_pictures/
или попробуйте так
<?
$pattern = "|<a href=\"index.php\?productID=(.*?)\">.+(?:<img src=\"products_pictures/)?(.*?)\" |is";
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(24.10.2007 в 20:22)
| | Всем спасибо! Более менее разобрался, но есть одно маленькое препятсвтвие
Вот шаблон:
$pattern = "|<a href=\"index.php\?productID=(.*)\">.+<img src=\"products_pictures/(.*)\" |isU";
|
Проблема в том, что тега <img src может и не быть!
Как быть? Может есть какие-то варианты указать что img тэга может не быть? | |
|
|
|
|
|
|
|
для: vladimir_sumy
(24.10.2007 в 19:32)
| | (?U) должно находиться в скобках.. В смысле ((?U)......)
Но я бы использовать это не стал. | |
|
|
|
|
|
|
|
для: vladimir_sumy
(24.10.2007 в 19:32)
| | всмысле после какой?
последний мой ответ я тестил как если весь текст со всеми тегами файла поместить в переменную $text, как $s в варианте со strip_tags().
просто блок вместе с <b></b><br> извлекало.
там если без (?U) , то возвращало пробелы с переносами строк в конце совпадения с шаблоном,
который перед \s* там. | |
|
|
|
|
|
|
|
для: EXP
(24.10.2007 в 18:46)
| | После последней подсказки у меня вылетает сообщение о ошибка в php.exe ) | |
|
|
|
|
|
|
|
для: kasmanaft
(24.10.2007 в 18:07)
| | или (?U) внутри подвыражения
$text = preg_replace( "#\<\!\-\-((?!\-\-\>).)+\-\-\>#si", '', $text );
// исключение HTML комментариев из обрабатываемого
preg_match_all("#\<td colspan\=2\>\s*((?U)(?:(?!\<\/td\>|<form).)+)\s*\<\/td\>#si",
$text, $out, PREG_PATTERN_ORDER ) ;
var_dump($out[1]);
|
здесь что-бы пробелы не попадали | |
|
|
|
|
|
|
|
для: vladimir_sumy
(24.10.2007 в 17:41)
| | > Как можно ограничить прожорливость скобок (.*)
Глобально (повлияет на все *, +) - добавить модификатор "U"
.....=2>[\n\s]*(.*)</table>|isU';
Локально - .....=2>[\n\s]*(.*?)</table>|is | |
|
|
|
|
|
|
|
для: Faraon
(24.10.2007 в 16:12)
| | Спасибо! Уже лучше!
Но как разбить страничку вот на те вот блоки что я написал?
На страничке много товаров... И они состоят из тех блоков что я написал.
Как можно ограничить прожорливость скобок (.*)
$pattern = '|<table width=95% border=0 cellspacing=1 cellpadding=2>[\n\s]*(.*)</table>|is';
|
Как можно тут помочь делу? ;) | |
|
|
|
|
|
|
|
для: vladimir_sumy
(24.10.2007 в 15:53)
| | Что типа такого
<pre>
<?php
$s='<table width=95% border=0 cellspacing=1 cellpadding=2>
<tr>
<td width=1% align=center valign=top>
<a href="index.php?productID=1878">
<img src="products_pictures/16_1310_small.jpg"
alt="16/1310 FCL/Т9 22W"
border=0><br>
подробнее...
</a>
</td>
<td valign=top width=99%>
<table width=100% border=0 cellpadding=2>
<tr>
<td valign=top>
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td>
<a class=cat href="index.php?productID=1878">
16/1310 FCL/Т9 22W
</a>
<br>
</td>
</tr>
</table>
</td>
<!-- <td align=right valign=top width="100">
<form action="index.php?categoryID=138&prdID=1878" method=post
name="HiddenFieldsForm_1878" >
</form>
</td> -->
</tr>
<tr>
<!-- <td colspan=2>
<b>Цена:
<font class=cat color=red>
$1.00 </font>
</b>
</td> -->
</tr>
<form action="index.php?productID=1878" method=post
name="MainForm1_1878">
</form>
<tr>
<td colspan=2>
лампа энергосберегающая кольцевая<br>
<b>16/1310FCL/T9</b><br>
Мощность: <b>220V 22W</b> <br>
Цоколь: <b>G10Q</b><br>
цветовая температура: <b>6400К</b><br>
</td>
</tr>
<tr>
<td colspan=2>
<form action="" method=post
name="MainForm3_1878">
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
';
$s=strip_tags($s,"<td><br></td>");
preg_match_all("|<td colspan=2>(.+?)</td>|is",$s,$out);
print_r ($out);
?>
|
| |
|
|
|
|
|
|
| День добрый!
Вот есть ХТМЛ:
<table width=95% border=0 cellspacing=1 cellpadding=2>
<tr>
<td width=1% align=center valign=top>
<a href="index.php?productID=1878">
<img src="products_pictures/16_1310_small.jpg"
alt="16/1310 FCL/Т9 22W"
border=0><br>
подробнее...
</a>
</td>
<td valign=top width=99%>
<table width=100% border=0 cellpadding=2>
<tr>
<td valign=top>
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td>
<a class=cat href="index.php?productID=1878">
16/1310 FCL/Т9 22W
</a>
<br>
</td>
</tr>
</table>
</td>
<!-- <td align=right valign=top width="100">
<form action="index.php?categoryID=138&prdID=1878" method=post
name="HiddenFieldsForm_1878" >
</form>
</td> -->
</tr>
<tr>
<!-- <td colspan=2>
<b>Цена:
<font class=cat color=red>
$1.00 </font>
</b>
</td> -->
</tr>
<form action="index.php?productID=1878" method=post
name="MainForm1_1878">
</form>
<tr>
<td colspan=2>
лампа энергосберегающая кольцевая<br>
<b>16/1310FCL/T9</b><br>
Мощность: <b>220V 22W</b> <br>
Цоколь: <b>G10Q</b><br>
цветовая температура: <b>6400К</b><br>
</td>
</tr>
<tr>
<td colspan=2>
<form action="" method=post
name="MainForm3_1878">
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
|
Это товар в магазине. Таких вот блоков на странице много.
Вопрос: как мне вырезать из такой странички текст типа:
лампа энергосберегающая кольцевая
16/1310FCL/T9
Мощность: 220V 22W
Цоколь: G10Q
цветовая температура: 6400К
|
Или так:
лампа энергосберегающая кольцевая
16/1310FCL/T9
220V 22W
G10Q
6400К
|
Тоесть мне нужно взять всю текстовую информацию отсюда...
Писал такой код:
$file = "c:/tmp/shop/file_1.htm";
$content = file_get_contents($file);
$pattern = '%<b>(.*)</b><br>\\r\\nМощность:.?<b>(.*)</b>.?<br>%i';
preg_match_all($pattern, $content, $matches, PREG_PATTERN_ORDER);
for ($i=0; $i< count($matches[0]); $i++) {
echo "matched: " . $matches[0][$i] . "\n";
echo "part 1: " . $matches[1][$i] . "\n";
echo "part 2: " . $matches[3][$i] . "\n";
echo "part 3: " . $matches[4][$i] . "\n\n";
}
echo "<pre>";
print_r($matches);
echo "</pre>";
|
И конечно ничего не получается.. :( Хелп ми) Или может у кого есть пример подобного?
Кругом я вижу только текста небольшого объёма.. :( | |
|
|
|
|