JS да чете файл от уеб => масив от масиви

azsym

New member
имам един тхт файл на сайта:
http://www.bgstreet.co.uk/bgstr/test.txt
как от това мога да получа това на една друга страница:

var beaches = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];

или поне масива в паметта. Не е нужно да се вижда така, но ми трабва да мога да правя нещо с него.

Т.е трябва ми:

1. отвори файла от уеб за четене (зареди текста)
2. с цикъл - за всеки ред от файла, добави реда към масива, като разделиш реда на ','
 
Re: JS да чете файл от уеб => масив от масиви

уточни първо къде трябва да се намира този файл - на компа ти или на УРЛ в интернет или просто го копи-пействаш в textarea

в последния случай няма да имаш нужда от ajax(javascript+php) а в първите 2 случая няма кой да ти пише скрипт заемащ 2-3 страници 🙂
 
Re: JS да чете файл от уеб => масив от масиви

Обръщането от текст към масив ще стане сравнително лесно с регулярен израз (един ред).
Малко повече редове ще ти трябват за да вземеш кода от адреса и да си го бутнеш в променлива, която да прекараш през регулярния израз
 
Re: JS да чете файл от уеб => масив от масиви

четеш файла ред по ред, с explode буташ всеки ред в масив, който съответно е пореден елемент от главния масив...
 
Re: JS да чете файл от уеб => масив от масиви

PHP:
array explode ( string $delimiter , string $string [, int $limit ] )

Прави точно каквото му трябва - по разделител разделя низа и бута елементите в масив. Ако в кавичките има запетайка, винаги може да я реплейсне временно с нещо друго и после да направи обратната замяна...

За split:
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
 
Re: JS да чете файл от уеб => масив от масиви

azsym да каже дали може да има запетайка в кавичките, но ако няма, трябва нещо такова да върши работа

PHP:
$file = fopen("test.txt", "r") or exit("Unable to open file!");

while(!feof($file)){
  $masiv[] = explode( ", ", fgets($file));
}
fclose($file);

print_r($masiv); //Отпечатваме масива за проверка
 
Re: JS да чете файл от уеб => масив от масиви

направих го по 2 начина:
1. с httpreq от браузера взима тхт файла от адреса.
после с split('\n') го бута в масив от масиви - всеки ред е масив.
после при викане на
масив[0].split(',')[0] ми дава името от примера

поради нещо обаче това не сработи в цикъл, трябваше ми всеки под-масив да мине през цикъла.

затова:
2. просто пиша на сървъра един js файл в който е дефиниран масива със всички подмасиви вътре.

после в осносвния файл просто го включвам.

Така цикъла работи ОК.
 

Back
Горе