1. Есть опять проблемы, хотя вроде бы все правильно пишешь, а результата нет, например:
$res=preg_match_all(\'/TBODY/s\'... выводит все TBODY ,а:
2. Теперь о моем прайсе:
  
    20.02 05:30
 
 | Товар1 Товар2
 
 | 35 
 | onclick="return m(this)">26.92 id=r3_3143svsfd onclick="return m(this)">27.05
 
 | 270.5 
 | 
таких строк очень много
Пишу:
$res=preg_match_all(\'/(?:)([\\D]+?)(?: | )/s\',$order,$found); Выводит все Товар1
 Товар2 изо всех строк. Теперь вырезаем еще
 | 35: $res=preg_match_all(\'/(?:
 | )([\\D]+?)(?: | )([\\d]*?)(?:<\\/B> | Ведь вроде правильно написал. 
 | onclick="return m(this)">26.92 id=r3_3143svsfd onclick="return m(this)">27.05
 Вот то что я написал для віделеного фрагмента, но оно не работает для поиска 26.92 и 27.05:
 /(?:
 | *?]>$)([0-9\\.]*?)(?:<\\/A> например)*?])([0-9\\.]*?)>$([0-9\\.]*?)(?:<\\/A>)/s
 как правильно писать?
 3. И последний вопрос:
 Допустим вырезал я все строки, получилось у меня строка например:
 20.02
 05:30  Товар1
 Товар2  35  26.92  27.05  270.5
 Теперь это все надо вбить ее в базу данных соответственно с 6 полями, тоесть как имея такую строку получить доступ к выделенным подстрокам.
 
							
							 
								 
								Записан
							 
 
					
					
						
						
							
								
									
									
									« Ответ #1 : 20 Февраля 2004, 13:06:32 » 
								Abram проще буде договориться с теми, кто прайс генерирует. Пусть они его генерируют либо в более чистом ХТМЛ либо вообще в каком-тодргом формате (CSV например)
 
							
							 
								 
								Записан
							 First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette ) 
 
					
					
						
						
							
								
									
									
									« Ответ #2 : 20 Февраля 2004, 14:24:59 » 
								По другому никак, ребята помогите времени уже почти нет!!!!!!! 
							
							 
								 
								Записан
							 
 
					
					
						
						
							
								
									
									
									« Ответ #3 : 20 Февраля 2004, 15:21:24 » 
								Abram никто здесь не будет разбираться с таким кривым ХТМЛ. Почему он не валидный ? Почему теги не закрываются ? (
 | 
 Abram:но оно не работает для поиска 26.92 и 27.05:
 /\\d\\d\\.\\d\\d(?=<\\/A>)/s
 
							
							 
								 
								Записан
							 First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette ) 
 
					
					
						
						
							
								
									
									
									« Ответ #4 : 20 Февраля 2004, 15:22:26 » 
								опять форум лишний пробел вставил   
							
							 
								 
								Записан
							 First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette ) 
 
					
					
						
						
							
								
									
									
									« Ответ #5 : 20 Февраля 2004, 15:51:38 » 
								Ну хорошо будем разбираться, а что за прикол с этим, какой здесь принцип действия регов? $res=preg_match_all(\'/TBODY/s\'... выводит все TBODY ,а:$res=preg_match_all(\'/$res=preg_match_all(\'/
 
							
							 
								 
								Записан
							 
 
					
					
						
						
							
								
									
									
									« Ответ #6 : 20 Февраля 2004, 23:06:34 » 
								Abram В первом и третьем случае ты указываешь конкретные слова для поиска, пусть это TBODY и <. Во втором я бы минимизировал числитель, т.е. поставил не s а sU. Попробуй. Хотя если ты код привел правильно все должно искаться соответственно.
 
							
							 
								 
								Записан
							 
 
					
					
						
						
							
								
									
									
									« Ответ #7 : 21 Февраля 2004, 01:09:17 » 
								Abram мама моя родная... ты хоть пытался разобраться в этом сам?  Ответ на вопрос №1: что функция preg_match_all возвращает? <? $string = "
 <TBODY class=row1>
 <TR>
 <TD>20.02<BR>05:30
 <TD class=lТовар1<BR>Товар2
 <TD><B>35</B>
 <TD><A href=\\"http://link/\\" id=sfsd32dfs
 onclick=\\"return m(this)\\">26.92</A><BR><A href=\\"http://link/\\"
 id=r3_3143svsfd onclick=\\"return m(this)\\">27.05</A>
 <TD><B>270.5</B>
 </TR>    ";
 preg_match_all("/<TBODY/s", $string, $matches);
 print_r($matches);
 ?>
 скопипейсти себе в редактор, не добавляя больше не строчки и ты увидишь, что оно выводит: Array (   => Array (  => Ты работаешь с тегами! и выводит в тело документа он тоже тег! следующий тег, который пойдет после того, что выведет print_r(), автоматически скажет твоему эксплореру закрыть тег , и после этого ты его увидишь только после того, как просмотришь исходный код документа.
 
 Чтобы правильно работать во время парсинга html документов надо вплотную работать при выводе результатов с функцией [p]htmlspecialchars[/p] а для этого тебе правильно надо разобрать массив, который выдаст preg_match_all на строки!!!
 
 Ответ на вопрос №2:
 Надо использовать опережающую и ретроспективную проверку, а так же использовать условие выбора!
 
 вот результирующий код:
 
 <?
 $string = "
 <TBODY class=row1>
 <TR>
 <TD>20.02<BR>05:30
 <TD class=lТовар1<BR>Товар2
 <TD><B>35</B>
 <TD><A href=\\"http://link/\\" id=sfsd32dfs
 onclick=\\"return m(this)\\">26.92</A><BR><A href=\\"http://link/\\"
 id=r3_3143svsfd onclick=\\"return m(this)\\">27.05</A>
 <TD><B>270.5</B>
 </TR>    ";
 preg_match_all("/<TBODY/s", $string, $matches);
 foreach($matches as $item)
 {
 foreach($item as $tbody)
 {
 echo htmlspecialchars($tbody);
 }
 }
 //конец разборок с TBODY
 
 echo "
 ";
 //начало разборок с парсингом Html
 preg_match_all("/(?<=>\\)(\\\\d*\\\\.\\\\d*)(?=<\\\\/A>|<\\\\/B>\\)/", $string, $matches);
 print_r($matches);
 ?>
 
 ответ на вопрос №3 ты получишь, когда будет понятно, какие данные куда должны пойти из сформированной тобой строки.
 
 Макс и другие
 чтобы форум не ставил пробел перед скобкой, надо перед ней поставить обратный слеш. Вот так выглядит реально строка, которую я пишу, чтобы получить то, что вы видите в коде выше:
 preg_match_all("/(?<=>\\)(\\\\d*\\\\.\\\\d*)(?=<\\\\/A>|<\\\\/B>\\)/", $string, $matches);
 тоже самое надо ставить обратный слеш перед обратным слешем, чтобы он его не кушал
 
							
								« Последнее редактирование: 21 Февраля 2004, 01:32:11 от Yukko »
							 
								 
								Записан
							 работа в Украине 
   
 |