Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
PHP

Szukam funkcji do przeszukiwania plikow

PHP

  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 karolo_k

    Wszechpomocny

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 07.07.2011 21:23

Witam was, pisze do was temat z prośbą o pomoc w znaleźieniu odpowieniej funkcji php.

Szukam funkcji która będzie przeszukiwała pliki (na razie txt)
Chodzi o to że chcę aby taka funkcja odszukawała mi perwne wartości z plików konfiguracyjnych.
Np.

Jak w serweach cs jest plik server.cfg (no tylko on jest cfg a nie txt) a w nim jest hostname i rcon i wiele innych. To chcę żeby ta funkcja znalazła mi jaka jest wartość dla hostname i jaka jest dla rcon.

I dobrze by było żeby mozna było zrobić tak żeby wrazie czego można było zamienić np. "Hostname ServerCS" na "Hostname BotowaniaUMnie"
  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 07.07.2011 21:33

Najłatwiej chyba jest użyć PHP: file - Manual i przejść foreach`em poszukując odpowiednich fragmentów; każdą linię możesz podzielić po spacji za pomocą explode albo poszukać nazwy cvara PHP: strstr - Manual albo wyrażeniami regularnymi PHP: preg_match - Manual
  • +
  • -
  • 0

#3 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 07.07.2011 21:46

Tak to ja jakoś nie czaję.
Szukam funkcji która będzie szukała dokładnie takiej frazy jak ja chce w takim pliku jak ja chce.



Chyba że caly dokument zapisac do tabeli używająć explode na spacje.

I wtedy jak np wyraz hostname byl by 20 w tablicy to 21 byl by juz nazwa serwera?
  • +
  • -
  • 0

#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 07.07.2011 23:45

a nie mozesz poprostu pobrac jednej linijki rozbic ja na pol i pierwsza czesc to cvar a druga to wartosc ?? i potem przejsc do nastepnej linii ?? dobry sposob to foreach

ale oczywiscie mozesz kombinowac przy okazji sie czegos nauczysz :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 08.07.2011 20:56

No o to mi właśnie chodzi, tylko teraz się tak zastanawiam czy to czasem nie będzie zbyt ciężkie zadanie żeby wczytać taki np server.cfg po wyrazie do tabeli a potem przeszukac to pare razy?
  • +
  • -
  • 0

#6 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 08.07.2011 21:01

PHP: DirectoryIterator - Manual
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#7 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 08.07.2011 21:33

Tak rzuciłeś hasłem że nie wiem nawet jak z tego skorzystać. Ale odnośnie tej opcji rozdzielania wszystkiego w tabele to jest taki problem.

Przykładowy konfig
hostname [email protected]
rcon 123
password qwe123
owner karolo_k

I jak używam
explode(" ", $dane)
$dane to tresc calego pliku tekstowego.

Problem polega na tym że jak exploduje po spacji to mi wychodzi tak:
- po [email protected] czy 123 czy qwe123 niema spacji wiec 123 i password jest traktowany jako 1 i to jest w tym samym polu w tabeli a to powinny byc 2 rozne pola.
I teraz nie wiem czy mam robic tak zeby zmodyfikowac konfig zeby po kazdej wartosci byla spacja czy da sie jakos inaczej?
  • +
  • -
  • 0

#8 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 08.07.2011 21:49

Tak rzuciłeś hasłem że nie wiem nawet jak z tego skorzystać. Ale odnośnie tej opcji rozdzielania wszystkiego w tabele to jest taki problem.

Nie hasłem, tylko biblioteką która odpowiada właśnie za przeglądanie zawartości plików - a przykłady masz w dokumentacji poniżej.

Opisz dokładnie jeszcze raz o co Ci chodzi. Odczyt pliku i ew. edycję możesz zrobić np. tak - PHP: file - Manual Pobierasz zawartość do tablicy (linia po linii) i robisz z nimi co chcesz. Na koniec zapisując przez fwrite()
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#9 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 08.07.2011 21:55

Tak teoretycznie to ciężko mi będzie więc spróbuję praktycznie na przykładzie.

Pisze taki skrypt który doczyta mi z pliku server.cfg pewne wybrane wartości (np RCON HOSTNAME itp.)

Wieć wymyśliłem żeby zrobić tak:
Cały plik zapisać do tablicy w której każdy wyraz jest w oddzielnym polu
Potem trzeba przeszukać tablicę pod kątem poszukiwanych craftów, np.
hostname rcon_password
No i jak podczas przeszukiwania serwer trafi np na Hostname na 50 polu tablicy to znaczy ze pole 51 zawiera nazwe serwera bo w configach jest tak ze po hostname zazwyczaj jest podana nazwa.


I chcę parę razy przeszukać tablice pod kątem róznych poszukiwanych craftów.


Być może moj sposób jest lichy......

Najlepiej jak by ktoś znał taka funkcja która będzie dziłała jak ctrl+f na plikach.
  • +
  • -
  • 0

#10 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 08.07.2011 23:04

chlopie na koncu linii nie ma spacji tylko znak konca linii a to jest roznica mowilem zeby wczytywal po 1 linijce a nie wszystko naraz to bedzie ci latwiej
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#11 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 09.07.2011 09:53

Być może moj sposób jest lichy......

Lekko.

<?php

$zmienna = 'sv_maxrate';
$wartosci = array('min' => 2000, 'max' => 2500, 'poprawne' => 2500);

$fh = fopen("server.cfg","r");
while (!feof($fh)){
$content[] = fgets($fh,9999);
}
fclose($fh);

for($i=0;$i<count($content);$i++) {
if(preg_match("/".$zmienna."/i", $content[$i])) {
$val = explode(" ", $content[$i]);

if(($val[1] > $wartosci['max']) || ($val[1] < $wartosci['min'])) {
$content[$i] = $zmienna." ".$wartosci['poprawne']."
";
}
}
}



$fh = fopen("server.cfg","w");
for($i=0;$i<count($content);$i++)
fwrite($fh,$content[$i]);
fclose($fh);
?>


Dlaczego dwa uchwyty? Bo tak mi było prościej :-)
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl






Również z jednym lub większą ilością słów kluczowych: PHP

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych