Столкнулся с такой проблеммой. Есть текстовой файл code.txt. В нем лежат данные, напимер такие:
Текст текст текст|
Текст ттекст|
Текст текст текст|
Как видите, конец каждой строки отмечен символом |
Мне надо эти данные занести втаблицу БД. Но возникают проблеммы с разбором строки.
Я написал такой код чтоб в масив $result занносились все даннае при разборе
<? ob_start();
header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: 0');
header('Pragma: no-cache');
$filename = "code.txt";
$fh = fopen($filename, "r") or die("Can't open file!");
$file = fread($fh, 10000);
fclose($fh);
preg_match_all('|<[^>]+>(.*)</[^>]+>|U',$file,$result);
var_dump($result);
?>
Но вот когда смотрю массив, то выводятся такие данные
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
Подскажите в чем ошибка.
Заранее спасибо!
Спустя 11 минут, 39 секунд (27.09.2011 - 10:24) alex12060 написал(а):
preg_match_all('|<[^>]+>(.*)</[^>]+>|U',$file,$result);
Признайтесь, Вы сами это написали или сперли откуда-то?
Спустя 16 минут, 31 секунда (27.09.2011 - 10:41) Diakon написал(а):
Цитата (alex12060 @ 27.09.2011 - 07:24) |
preg_match_all('|<[^>]+>(.*)</[^>]+>|U',$file,$result); Признайтесь, Вы сами это написали или сперли откуда-то? |
Ничего я не крал как вы выразились. Единственное что не мое в коде - макет регулярного выражения. Правда я надеился что вы дадите ответ на мой вопрос вместо того чтоб постить в моей теме свои бессмысленные вопросы.
Тем не мение я решил проблемму в таком виде:
<? ob_start();
header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: 0');
header('Pragma: no-cache');
$filename = "code.txt";
$fh = fopen($filename, "r") or die("Can't open file!");
$file = fread($fh, 10000);
fclose($fh);
$regs = split(":: *",$file);
var_dump($regs);
?>
Правда в скрипт парсера пришлось внести изменения и конец строки обозначаю символом :: но не беда. Почему то символ | не хочет обрабатываться.
Спустя 13 минут, 16 секунд (27.09.2011 - 10:54) alex12060 написал(а):
Diakon
Просто этот паттерн совершенно не годен для решения Вашей задачи.
Есть функция такая, explode() называется.
Если не сработает, то так:
Просто этот паттерн совершенно не годен для решения Вашей задачи.
Есть функция такая, explode() называется.
$new = explode('|', $file);
var_dump($new);
Если не сработает, то так:
$new = explode("|\r\n", $file);
// или так
$new = explode("|\n", $file);