php@max
Новичок
Парсер html
Нужен Парсер html, попытался написать, вот, что вышло:
<?php
$filename = "999.html";
$fd = fopen($filename, "a+");
$bufer = fread($fd, filesize($filename));
$musor = array("/ <b >ccc<\/b>/", "/ <b > vvv<\/b>/", "/ <b > 768778 <\/b>/",
"/<b > 56877 <\/b>/", "/ <b > 87978 <\/b>/", "/<b > <\/b>/");
$subject = $filename;
$patern = $musor;
$replacment = "\\1";
preg_replace($patern, $replacment, $subject);
preg_replace("#<[\s]*b[\s]*>([^<]*)<[\s]*=[\s]*>#i", $replacment, $subject);
preg_match_all ("#<[\s]*b[\s]*>([^<]*)<[\s]*/b[\s]*>#i", $bufer, $text);
fwrite($fd, $bufer);
fclose($fd);
print_r($text);
?>
1) Конструкция preg_replace не хочет работать, и значения, указаные в одномерном массиве $musor все равно выводятся.
$musor = array("/ <b >ccc<\/b>/", "/ <b > vvv<\/b>/", "/ <b > 768778 <\/b>/",
"/<b > 56877 <\/b>/", "/ <b > 87978 <\/b>/", "/<b > <\/b>/");
$subject = $filename;
$patern = $musor;
$replacment = "\\1";
preg_replace($patern, $replacment, $subject);
2) Как сделать так, чтоб в после этой конструкции:
preg_match_all ("#<[\s]*b[\s]*>([^<]*)<[\s]*/b[\s]*>#i", $bufer, $text);
в $text все значения выводились в такой же форме, как и в html файле. Точнее, в html файле в каждой строке находится определенное кол-во значений, и необходимо, чтоб в выводимой переменной все было также.
Нумерация значений в переменной $text начиналась заново с каждой строчки, например:
1) [1]=>a [2]=>b [3]=>c
2) [1]=>g [2]=>d [3]=>y
и т.д.
Нужен Парсер html, попытался написать, вот, что вышло:
<?php
$filename = "999.html";
$fd = fopen($filename, "a+");
$bufer = fread($fd, filesize($filename));
$musor = array("/ <b >ccc<\/b>/", "/ <b > vvv<\/b>/", "/ <b > 768778 <\/b>/",
"/<b > 56877 <\/b>/", "/ <b > 87978 <\/b>/", "/<b > <\/b>/");
$subject = $filename;
$patern = $musor;
$replacment = "\\1";
preg_replace($patern, $replacment, $subject);
preg_replace("#<[\s]*b[\s]*>([^<]*)<[\s]*=[\s]*>#i", $replacment, $subject);
preg_match_all ("#<[\s]*b[\s]*>([^<]*)<[\s]*/b[\s]*>#i", $bufer, $text);
fwrite($fd, $bufer);
fclose($fd);
print_r($text);
?>
1) Конструкция preg_replace не хочет работать, и значения, указаные в одномерном массиве $musor все равно выводятся.
$musor = array("/ <b >ccc<\/b>/", "/ <b > vvv<\/b>/", "/ <b > 768778 <\/b>/",
"/<b > 56877 <\/b>/", "/ <b > 87978 <\/b>/", "/<b > <\/b>/");
$subject = $filename;
$patern = $musor;
$replacment = "\\1";
preg_replace($patern, $replacment, $subject);
2) Как сделать так, чтоб в после этой конструкции:
preg_match_all ("#<[\s]*b[\s]*>([^<]*)<[\s]*/b[\s]*>#i", $bufer, $text);
в $text все значения выводились в такой же форме, как и в html файле. Точнее, в html файле в каждой строке находится определенное кол-во значений, и необходимо, чтоб в выводимой переменной все было также.
Нумерация значений в переменной $text начиналась заново с каждой строчки, например:
1) [1]=>a [2]=>b [3]=>c
2) [1]=>g [2]=>d [3]=>y
и т.д.
