Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод найденного в разных строках

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
thefreedom
Отправлено: 03 Августа, 2020 - 08:19:50
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Доброого утра всем. Есть такой вопрос как вывести все найденные значения, всех строк <a4>?<a4>, постарался в нутри кода всё расписать подробно.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $file =  file('base.html'); // Файл с данными формата
  4.  
  5. //Так выглядит файл
  6. //<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
  7. //<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
  8. //<tr><td><a1>0004<a1><td><a2>ЛАР<a2><td><a3>НПО<a3><td><a4>Kyocera2040<a4>
  9. //<tr><td><a1>0008<a1><td><a2>ОП<a2><td><a3>АО<a3><td><a4>Kyocera1028<a4>
  10.  
  11. $search = "<a2>ИТ"; // Что ищем
  12. $out = "";
  13. $count = count($file);
  14.  
  15. for($i=0; $i < $count; $i++)
  16. {
  17. if (stristr($file[$i],$search))
  18. {
  19. $out.=$file[$i];
  20. }
  21. }
  22.  
  23. {
  24. print $out; // Тут выводятся все строки котрые нашёл (в последствии это не нужно будет, находит правильные 2 строки)
  25. }
  26.  
  27. {
  28. $all = explode("<a4>",$out);
  29. echo "<b>".$all[1]."</b> "; // А вот тут выводятся значения то что находится в А4, но как вывести значения со всего найденного а не с одной строки ?!
  30. }
 
 Top
Vladimir Kheifets
Отправлено: 03 Августа, 2020 - 09:23:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Доброого утра!
thefreedom пишет:
Есть такой вопрос как вывести все найденные значения, всех строк <a4>?<a4>
... но как вывести значения со всего найденного а не с одной строки ?!

Попробуйте выбрать то, что находится в А4, так
Спойлер (Отобразить)
Удачи!
 
 Top
thefreedom
Отправлено: 03 Августа, 2020 - 09:40:41
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Немного не то, он так выводит все со свех <А4> а не с найденных (((
А у меня задача чтобы потом с этих 2х найденных строк:
<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
Отобразились значения Kyocera2735 и Kyocera2540 и в опоследствии с этими данными работать, причем они должны ещё как-то отличаться при выводе или переменные должны им присваиваться я вот и сам не пойму как это сделать не настолько силен в PHP.

К примеру:
$P1 - Kyocera2735
$P2 - Kyocera2540
а если строка появится ещё одна тобудет
$P3 - ???

Но может это вообще как-то по другому делается чтобы в последствии пользователь мог выбирать. А может быть вообще не использовать такое а как-то сделать фильтр
{
print $out;
}
И отсечь от туда ненужное...
(Добавление)
Вот так к примеру, но как остальное отфильтровать не нужное?
print str_replace("ИТ", "<input type=radio name=answer>", $out);
 
 Top
Vladimir Kheifets
Отправлено: 03 Августа, 2020 - 11:55:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




thefreedom пишет:
Немного не то, он так выводит все со свех <А4> а не с найденных (((
А у меня задача чтобы потом с этих 2х найденных строк:
<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
Отобразились значения Kyocera2735 и Kyocera2540 и в опоследствии с этими данными работать, причем они должны ещё как-то отличаться при выводе или переменные должны им присваиваться я вот и сам не пойму как это сделать не настолько силен в PHP.

К примеру:
$P1 - Kyocera2735
$P2 - Kyocera2540
а если строка появится ещё одна тобудет
$P3 - ???

Но может это вообще как-то по другому делается чтобы в последствии пользователь мог выбирать. А может быть вообще не использовать такое а как-то сделать фильтр
{
print $out;
}
И отсечь от туда ненужное...
(Добавление)
Вот так к примеру, но как остальное отфильтровать не нужное?
print str_replace("ИТ", "<input type=radio name=answer>", $out);

Советую Вам для поиска использовать preg_match_all, а для этого привести в порядок структуру данный, а именно,
тэги должны корректно закрываться т.е должно быть
CODE (html):
скопировать код в буфер обмена
  1. <tr><td>....</td><td>....</td><td>....</td></tr>

(Отредактировано автором: 03 Августа, 2020 - 11:55:35)

 
 Top
LIME
Отправлено: 03 Августа, 2020 - 12:27:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Vladimir Kheifets пишет:
Доброого утра!
thefreedom пишет:
Есть такой вопрос как вывести все найденные значения, всех строк <a4>?<a4>
... но как вывести значения со всего найденного а не с одной строки ?!

Попробуйте выбрать то, что находится в А4, так
Спойлер (Скрыть)
PHP:
скопировать код в буфер обмена
//$file =  file('base.html'); // Файл с данными формата
$file =  file_get_contents('base.html'); // Файл  читаем в строку $file
//Так выглядит файл // <<<EOF только для демо
$file = <<<EOF
<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
<tr><td><a1>0004<a1><td><a2>ЛАР<a2><td><a3>НПО<a3><td><a4>Kyocera2040<a4>
<tr><td><a1>0008<a1><td><a2>ОП<a2><td><a3>АО<a3><td><a4>Kyocera1028<a4>
EOF;
 
$pattern="/\<a4\>.+/";
preg_match_all($pattern, $file, $matches);
echo "<pre>";
print_r($matches[0]);
/*
результат:
Array
(
    [0] => Kyocera2735
    [1] => Kyocera2540
    [2] => Kyocera2040
    [3] => Kyocera1028
)
*/
Удачи!

я тоже цитировал тебя целиком
это наверняка как-то улучшает ответ
пока не знаю как, но не мог же ты так делать по причине глупости
причина должна быть... Хм
только результат чуть другой все же будет

PHP:
скопировать код в буфер обмена
  1. $pattern="/\<a2\>ИТ\<.+\<a4\>(.+)\</uU";
  2. preg_match_all($pattern, $file, $matches);
  3. print_r($matches[1]);
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB