|
|
|
| Как вывести данные в уже подготовленную заранее html-таблицу?
Есть такой текстовый файл с содержанием
<script type='text/javascript'>
var N1=[];
N1[0]=['1','2','3','7','4','5'];
N1[1]=['','','','',''];
N1[2]=['','','','',''];
......
N1[23]=['','','','',''];
var N2=[];
N1[0]=['','','','',''];
N1[1]=['','','','',''];
N1[2]=['','','','',''];
......
.......
</script>
Здача: Нужно чтобы цифры 1 2 3 4 5 были на своих местах в зарание подготовленной таблице
<tbody>
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
</table>
Какие у кого идеи по этому поводу?
Я так полагаю, нужно:
1. Содержимое файла очистить от одинарных кавычек и последующего мусора с помошью регулярных выражений (как?)
2. Очищенные данные поместить в массив (двумерный?)
3. ........ добавляем, у меня кризис
---------------------Вот на даный момент я добился---------------
$pattern = "|<script type='text/javascript'>(.*?)</script>|is"; // очистка от тегов ява скрипта
preg_match($pattern, $str, $out);
$lines = explode("','",$out[1]);
foreach ($lines as $line_num => $line) {
echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
|
В переменной $pattern уже находится содержимое файла в виде строки. | |
|
|
|
|
|
|
|
для: sapphire
(02.02.2009 в 17:01)
| |
<?php
$str = <<<DAT
<script type='text/javascript'>
var N1=[];
N1[0]=['1','2','3','7','4','5'];
N1[1]=['','','','',''];
N1[2]=['','','','',''];
......
N1[23]=['','','','',''];
var N2=[];
N2[0]=['\'','','','',''];
N2[1]=['','','','',''];
N2[2]=['','','','',''];
......
.......
</script>
DAT;
$ptrn = '#(N(\\d+)\\[(\\d+)\\]=\\[(.+)\\];)\\r?\\n#e';
$x = preg_match_all($ptrn, $str, $out, PREG_SET_ORDER);
foreach($out as $v)
{
if(isset($v[2]) && isset($v[3]) && isset($v[4]))
$n[$v[2]][$v[3]] = eval('return array('.$v[4].');' );
}
echo '<pre>';
print_r($n);
?>
|
решение небезопасное, откровенно говоря....
как из массива данные по таблице разложить - тема отдельная.
Надеюсь, пройденная. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 17:48)
| | Спасибо работает но только есть недочет какой-то
С этим проблем нету
var N1=[];
N1[0]=['1','2','3','7','4','5'];
N1[1]=['','','','',''];
N1[2]=['','','','',''];
А с этим есть
var N1=[];
N1[0]=['1','2','3','7','4','5'];
N1[1]=['','','','','4']; - проблема если пусто в начальных скобках, не выводится результат из массива и не выводится сам массив (но данные могут там появится при последующих запусках парсера)
N1[2]=['2','4','а','А3','']; | |
|
|
|
|
|
|
|
для: sapphire
(03.02.2009 в 12:16)
| | где у Вас пусто в начальных скобках?
(раз)
Array
(
[1] => Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 7
[4] => 4
[5] => 5
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] => 4
)
[2] => Array
(
[0] => 2
[1] => 4
[2] => а
[3] => А3
[4] =>
)
)
)
|
и где не выводится? | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 12:36)
| | Parse error: syntax error, unexpected ',', expecting ')' in D:\work\web\sapphire\go1.php(29) : eval()'d code on line 1
Parse error: syntax error, unexpected ',', expecting ')' in D:\work\web\sapphire\go1.php(29) : eval()'d code on line 1
Array
(
[1] => Array
(
[0] => Array
(
[0] => 00439206
[1] => 439206
[2] => 004510
[3] => 1
[4] => 27
[5] => Soccer / CLUB FRIENDLY
[6] => CFR Cluj (N)
[7] => Slovan Bratislava
[8] => 0859
..............
Попробуйте этот текс
<script type='text/javascript'>
var N1=[];
N1[0]=['00439206','439206','004510','1','27','Soccer / CLUB FRIENDLY','CFR Cluj (N)','Slovan Bratislava','0859','0',0,'0','1H 14\'','','True','1','0',0,'0','0','0','0','1','3186359','0.5-1','2.111','1.800','h','3186358','2.0','1.820','2.063','','','','','3188604','0-0.5','2.052','1.850','h','3188605','0.5-1','2.000','1.880','','','',''];
N1[1]=['','','','2','','','','','','',,'','','','True','1','0',0,'0','0','0','0','1','3188602','0.5','1.740','2.190','h','3188603','2-2.5','2.111','1.780','','','','','3186355','0.0','1.420','2.923','','3186354','0.5','1.690','2.234','','','',''];
N1[2]=['00439179','439179','004521','1','7140','Soccer / Hong Kong Lunar New Year Cup 2009','South China Pegasus Team (N)','Sparta Praha','0829','0',0,'0','1H 46\'','','True','1','0',0,'2','0','0','0','1','3186014','0.5','1.900','1.860','a','3186013','3-3.5','1.960','1.800','','','','','','','','','','','','','','','','',''];
N1[3]=['','','','2','','','','','','',,'','','','True','1','0',0,'0','0','0','0','1','3188824','','','','','3188825','','','','','','','','','','','','','','','','','','','',''];
N1[4]=['00439183','439183','005709','1','3339','Soccer / Saudi 1st Division League','Al Riyadh','Al Fath','0839','0',0,'0','1H 37\'','','True','1','0',0,'1','0','0','0','1','3186086','0-0.5','1.800','2.041','a','3186085','3.0','1.830','1.990','','','','','3188954','0.0','2.282','1.620','','3188955','1.5','2.904','1.345','','','',''];
</script>
_____________________________
Возможно причина в том, что я не досмотрел строку до конца?
Формат ее не строго '','',
В строке есть две подряд запятые '',,'', наверное в этом проблема | |
|
|
|
|
|
|
|
для: sapphire
(03.02.2009 в 12:58)
| | наверное. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 13:52)
| | Как решить эту проблему? | |
|
|
|
|
|
|
|
для: sapphire
(03.02.2009 в 14:20)
| | замените ,, на что-нибудь удобоваримое. на ,0, например. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 14:46)
| | Дело в том, что строка ,'', ,'', - это шаблон в который между одинарных кавычек вставляются числа и текст.
Может переделать регулярное выражение? Помогите я неопытный в этом деле | |
|
|
|
|
|
|
|
для: sapphire
(03.02.2009 в 14:51)
| | это не шаблон.
а применяемое регулярное выражение никак не затрагивает две запятые идущие подряд.
$str = str_rellace(',,', ',0,', $str);
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 12:36)
| |
$str = <<<DAT
<script type='text/javascript'>
var N1=[];
N1[0]=['1','2','3','7','4','5']; //выводится
N1[1]=['yhrtyh','','','','']; // выводится
</script>
DAT;
$ptrn = '#(N(\\d+)\\[(\\d+)\\]=\\[(.+)\\];)\\r?\\n#e';
$x = preg_match_all($ptrn, $str, $out, PREG_SET_ORDER);
foreach($out as $v)
{
if(isset($v[2]) && isset($v[3]) && isset($v[4]) )
$n[$v[2]][$v[3]] = eval('return array('.$v[4].');' );
}
echo '<pre>';
print_r($n);
|
В этом варианте все отлично
N1[0]=['1','2','3','7','4','5']; //выводится
N1[1]=['yhrtyh','','','','']; // выводится
|
Но в этом
$context - в этой переменной находится двумерный массив заголовка
$xcontext = stream_context_create($context);
$str=file_get_contents("http://www.xxxxx.com/Live_data.aspx?RT=W&CT=&Game=0",FALSE,$xcontext);
$ptrn = '#(N(\\d+)\\[(\\d+)\\]=\\[(.+)\\];)\\r?\\n#e';
$x = preg_match_all($ptrn, $str, $out, PREG_SET_ORDER);
foreach($out as $v)
{
if(isset($v[2]) && isset($v[3]) && isset($v[4]) )
$n[$v[2]][$v[3]] = eval('return array('.$v[4].');' );
}
echo '<pre>';
print_r($n);
|
Результат выводится но не до конца
N1[0]=['1','2','3','7','4','5']; //выводится
N1[1]=['yhrtyh','','','','']; // не выводится
N1[2]=['1','2','3','7','4','5']; //выводится
N1[3]=['yhrtyh','','','','']; // не выводится
N1[4]=['yhrtyh','','','','']; // не выводится
|
В чем причина? В первом варианте есть
Может с этим всё связано? | |
|
|
|
|
|
|
|
для: sapphire
(04.02.2009 в 15:12)
| | что находится в переменной $str?
Пока что все Ваши конкретные примеры содержимого скрипт обрабатывает.
Угадать, что именно Вам удается вытащить с сервера, как Вы понимаете , невозможно.
Можно, конечно, честный анализатор написать... Но даже в этом слчае нужно опираться на какие-то правила того, что в этих строках может быть. | |
|
|
|
|