Помощь по написанию парсера

flat73

Постоялец
Регистрация
15 Авг 2008
Сообщения
57
Реакции
2
Написал вот такой код:
PHP:
<?php
$url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
$content=file_get_contents($url);
$teg_in="<select class=\"product_info_size\"";
$teg_out="</select>";
$position=strpos($content,$teg_in);
$content=substr($content,$position);
$position=strpos($content,$teg_out);
$content=substr($content,0,$position);
$content=strip_tags($content);
$content=str_replace("choose your size","",$content);
//Открываем файл
$fp=fopen("kod.txt",'w');
//Запись в файл
$ft=fwrite($fp,$content);
$ft=str_replace("choose your size","",$fp);
//Закрываем файл
fclose($fp);
?>
На выводе появляется текстовый файл с содержанием:
S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock)
Вопрос:
1. Как убрать не нужную надпись (+ 4 in stock)? надпись может меняться к примеру (+ 2 in stock)
2. Как сделать так чтобы каждый размер присвоился определенной переменой ($s=s; $m=m; и т.д.)
Заранее спасибо!
 
пример ща дать не могу но рыть надо в сторону preg_match
 
PHP:
$data = 'S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock) ';
preg_match_all('/(\w+) \(\+ \d+ in stock\)/is', $data, $m, PREG_PATTERN_ORDER);

в $m[1] будет массив с размерами.
 
PHP:
$data = 'S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock) ';
preg_match_all('/(\w+) \(\+ \d+ in stock\)/is', $data, $m, PREG_PATTERN_ORDER);
в $m[1] будет массив с размерами.


Еси не трудно можно написать полностью код как будет с массимвом, я только новичко еще и плохе себе представляю как это будет выглядеть.
 
Код не забываем обрамлять тэгами
PHP:
 )
[PHP]
<?php
$url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
$content=file_get_contents($url);
$teg_in="<select class=\"product_info_size\"";
$teg_out="</select>";
$position=strpos($content,$teg_in);
$content=substr($content,$position);
$position=strpos($content,$teg_out);
$content=substr($content,0,$position);
$content=strip_tags($content);
$content=str_replace("choose your size","",$content);

print $content;
preg_match_all('/(\w+) \(\+ \d+ in stock\)/is', $content, $m, PREG_PATTERN_ORDER);

//Открываем файл
$fp=fopen("kod.txt",'w');

$allsize = count($m[1]);
for ($i = 1;$i < $allsize;$i++){
	//Запись в файл	
	$ft=fwrite($fp,$m[1][$i]."\n");
}
	
$ft=str_replace("choose your size","",$fp);
//Закрываем файл
fclose($fp);
?>
 
Написал вот такой код:
На выводе появляется текстовый файл с содержанием:
S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock)
Вопрос:
1. Как убрать не нужную надпись (+ 4 in stock)? надпись может меняться к примеру (+ 2 in stock)
PHP:
$url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
$content=file_get_contents($url);
$teg_in="<select class=\"product_info_size\"";
$teg_out="</select>";
$position=strpos($content,$teg_in);
$content=substr($content,$position);
$position=strpos($content,$teg_out);
$content=substr($content,0,$position);
preg_match_all ('#<option value="\d">(.*?)\s#',$content,$matches);
$fp=fopen("kod.txt",'w');
for($i=0; $i<count($matches[1]); $i++){
	$ft=fwrite($fp,$matches[1][$i].' ');
}
fclose($fp);
2. Как сделать так чтобы каждый размер присвоился определенной переменой ($s=s; $m=m; и т.д.)
Заранее спасибо!
PHP:
$url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
$content=file_get_contents($url);
$teg_in="<select class=\"product_info_size\"";
$teg_out="</select>";
$position=strpos($content,$teg_in);
$content=substr($content,$position);
$position=strpos($content,$teg_out);
$content=substr($content,0,$position);
preg_match_all ('#<option value="\d">(.*?)\s#',$content,$matches);
for($i=0; $i<count($matches[1]); $i++){
	$razmer[$matches[1][$i]] = $matches[1][$i];
}
print_r ($razmer); //Array ( [S] => S [M] => M [L] => L [XL] => XL [XXL] => XXL [XXXL] => XXXL )
В переменной $razmer['S'] будет размер S и т.д.
 
Назад
Сверху