Цикл не цикл...

12
xpycteamset
На сайте с 05.10.2009
Offline
129
846

Подскажите как зациклит, или может все не верно?

По такой конструкции работает. Но парсится только одна строчка. А их на странице больше.

$html = file_get_contents ("страничка");

if (preg_match('#<div class=\"repere\">(.*?)</div>#',$html, $nom))
if (preg_match('#<div class=\"prsansprremp\">(.*?)</div>#',$html, $art))
if (preg_match('#<div class=\"coef\">(.*?)</div>#',$html, $kol))
if (preg_match('#<td class=\"coldesi\"><div class=\"desi\">(.*?)</div>#',$html, $opi))
if (preg_match('#<div class=\"descomp\">(.*?)</div>#',$html, $opin))
if (preg_match('#<div class=\"pravecprremp\">(.*?)</div>#',$html, $art))
if (preg_match('#<div class=\"prremp\">(.*?)</div>#',$html, $zart))
echo $nom[1];
echo $art[1];
echo $kol[1];
echo $opi[1];
echo $opin[1];
echo $zart[1];
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

вместо

preg_match

надо preg_match_all

Ну далее уже перебирать полученный массив данных.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
xpycteamset
На сайте с 05.10.2009
Offline
129
#2

Примерно понял но если заменить

preg_match

на

preg_match_all

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

Array

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#3
xpycteamset:
Примерно понял но если заменить
preg_match
на
preg_match_all
то все значения
Array

Правильно я же сказал, теперь вам нужно через foreach перебирать и выводит эти значения. Они же теперь в массиве ВСЕ хранятся.

xpycteamset
На сайте с 05.10.2009
Offline
129
#4

Что то мне подсказывает что я не прав 🙅


<?php
$html = file_get_contents ("страничка");
preg_match_all('#<div class=\"repere\">(.*?)</div>#',$html, $matches);
foreach ($matches as $nomq) {
echo $nomq[0];
}
?>

выводится только <div class="repere">01</div>01

А вот так вроде заработало

$html = file_get_contents ("страничка");
preg_match_all('#<div class=\"repere\">(.*?)</div>#',$html, $matches, PREG_SET_ORDER);
foreach ($matches as $nomq) {
echo $nomq[0];
}
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#5

foreach ($matches[0] as $nomq) {

echo $nomq;

}

xpycteamset
На сайте с 05.10.2009
Offline
129
#6

LEOnidUKG

Не идет, только один заход делает.

А тот вариант который выше привел выводит все что надо, только меня смущает вот эта конструкция

#<div class=\"repere\">(.*?)</div>#

Выводит следующее

<div class="repere">01</div>01

А должна по идее выводить 01

VHS
На сайте с 28.09.2007
Offline
142
VHS
#7

Print_r($matches);

xpycteamset
На сайте с 05.10.2009
Offline
129
#8

[0] на [1] и норм стало )

xpycteamset
На сайте с 05.10.2009
Offline
129
#9

А подскажите как эти данные ($nom[1] и $art[1]) запихнуть в таблицу?

пока у меня так


$html = file_get_contents ("страница");
echo '<table>
<tbody>
<tr>
<td>№</td>
<td>Артикул</td>
</tr>
';
preg_match_all('#<div class=\"repere\">(.*?)<\/div>#',$html, $matches, PREG_SET_ORDER);
foreach ($matches as $nom) {
echo $nom[1];
}
preg_match_all('#<div class=\"prsansprremp\">(.*?)<\/div>#',$html, $matches, PREG_SET_ORDER);
foreach ($matches as $art) {
echo $art[1];
}
echo '</tbody></table>';

Чувствую объединить цикл надо?

Примерно должно получиться

<tr>

<td>$nom[1]</td>

<td>$art[1]</td>

</tr>

<tr>

<td>$nom[1]</td>

<td>$art[1]</td>

</tr>

xpycteamset
На сайте с 05.10.2009
Offline
129
#10

Дошло как сделать.

preg_match_all('#<td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<div class=\"obsligne\">#', $htmlnew, $matches, PREG_SET_ORDER);
foreach ($matches as $nom) {

echo "<tr>\n\t<td>";
echo $nom[1];
echo '</td>
<td><a href="/art?var=';
echo $nom[2] . '">';
echo $nom[2];
echo "</a></td>\n\t<td>";
echo $nom[3];
echo "</td>\n\t<td width=\"70%\">";
echo $nom[4];
echo "</td>\n</tr>\n";

}

Но теперь другая проблема.

Есть строчка 1

<td>Данные 1</td><td>Данные 2</td><td>Данные 3<div class="obsligne">
и строчка 2

<td>Данные 1</td><td>Данные 2<br>Данные 2,2</td><td>Данные 3<div class="obsligne">
И Данные 2 должны служить ссылкой.

Если строчка 1 нормально получается ссылкой, то строчка два получается в виде

<a href="/Данные 2<br>Данные 2,2">Данные 2<br>Данные 2,2</a>
Чувствую должно быть что то типо такого:

$nom[2][1]

Но как пока не соображу 🙅

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий