Pisze skrypt który ma zamieniać fragment pliku na inny fragment i zapisywać plik. Fragment przykładowego pliku:
...
soul="0" maxdepotitems="1000" lastlogin="1187549183">
<spawn x="439" y="574" z="7"/>
<temple x="1000" y="1000" z="7"/>
<health now="855" max="855" food="0"/>
<mana now="830" max="830" spent="1567"/>
...
Skrypt ma zamieniać "<spawn x="439" y="574" z="7"/>" (kazdy plik ma inne pozycje x,y,z) na wpis z innymi losowymi pozycjami, losowanie pozycji i generowanie wpisu mam już zrobione, ale nie wiem jak w zmiennej odszukać i zamienić konkretny fragment pliku. Czyli jaką funkcją mogę zamienić fragment zaczynający sie od
<spawn x=
a kończący się na najbliższym
/>
chciałbym zamienić fragment pomiędzy lub razem z tymi kawałkami na wartość innej zmiennej. Przeglądałem wszystkie funkcje z "replace" na php.net, ale nie rozumiem składni typu "[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", więc jakby ktoś mógł mi napisać co w jakiej funkcji wpisać byłbym bardzo wdzięczny.
Czy da się jakoś ustawić atrybuty pliku w PHP? Dokładniej ustawić "Tylko do odczytu" lub wyłączyć "Tylko do odczytu"?
Kod który narazie napisałem:
<?PHP
//ustawienia
$playersdir = "players";
$spawn1x = "5";
$spawn1y = "5";
$spawn1z = "5";
$zasieg1 = "2";
$spawn2x = "55";
$spawn2y = "55";
$spawn2z = "7";
$zasieg2 = "6";
$spawnPRVx = "1";
$spawnPRVy = "1";
$spawnPRVz = "1";
$zasiegPRV = "2";
//ustalenie katalogu w ktorym sa pliki
while (false !== ($fs = readdir($d))) { if ($fs != ".") {
if ($fs != "..") {
//ustalenie nazwy konkretnego pliku
$filename = $playersdir."/".$fs;
//pobranie zawartosci pliku do zmiennej $plik
$open = fopen($filename,'r'); //ustalenie konto do sprawdzenia
$konto1 = "account=\"1\"";
$konto2 = "account=\"2\"";
//sprawdzanie numeru konta w pliku
//jesli konto 1
$numerkonta1 = strpos($plik, $konto1); if(!empty($numerkonta1)) { //losowanie pozycji dla konkretnego gracza
$ujemnyzasieg = 0 - $zasieg1;
$rand1 = mt_rand($ujemnyzasieg, $zasieg1); $rand2 = mt_rand($ujemnyzasieg, $zasieg1); $spawnx = $spawn1x + $rand1;
$spawny = $spawn1y + $rand2;
//skrypt przemieniajacy ustawienia w teksty dla konta 1
$spawnpoz = "<spawn x=".$spawnx."\" y=\"".$spawny."\" z=\"".$spawn1z."\">";
}
//jesli konto 2
$numerkonta2 = strpos($plik, $konto2); if(!empty($numerkonta2)) { //losowanie pozycji dla konkretnego gracza
$ujemnyzasieg = 0 - $zasieg2;
$rand1 = mt_rand($ujemnyzasieg, $zasieg2); $rand2 = mt_rand($ujemnyzasieg, $zasieg2); $spawnx = $spawn2x + $rand1;
$spawny = $spawn2y + $rand2;
//skrypt przemieniajacy ustawienia w teksty dla konta 2
$spawnpoz = "<spawn x=".$spawnx."\" y=\"".$spawny."\" z=\"".$spawn2z."\">";
}
//jesli konto PRV
if(empty($numerkonta1)) { if(empty($numerkonta2)) { //losowanie pozycji dla konkretnego gracza
$ujemnyzasieg = 0 - $zasiegPRV;
$rand1 = mt_rand($ujemnyzasieg, $zasiegPRV); $rand2 = mt_rand($ujemnyzasieg, $zasiegPRV); $spawnx = $spawnPRVx + $rand1;
$spawny = $spawnPRVy + $rand2;
//skrypt przemieniajacy ustawienia w teksty dla konta PRV
$spawnpoz = "<spawn x=".$spawnx."\" y=\"".$spawny."\" z=\"".$spawnPRVz."\">";
}
}
//zamykanie pliku w trybie odczytu
//otwieranie pliku w trybie zapisu
$uchwyt = fopen($filename, 'a+'); //znalezc <spawn x= do /> i podmienic na $spawnpoz?
//zapis pliku
//ustawienie w trybie tylko do odczytu?
//zamykanie pliku do zapisu
}
}
}
?>