maax990
17.01.2018, 08:16:13
Witam mam string $str = 'jdjfksaakfsdnfjXXXXdashfadnvlzvlfam' i potrzebuje podmienić w nim kilka liter.Znam początek ale nie znam liter w miejscu które chce podmieniać: kfsdnfjXXXX gdzie kfsdnfj znam a xxxx nie.Jak mogę to zrobić znając część liter oraz ilość liter do podmiany?
nospor
17.01.2018, 08:43:03
maax990
17.01.2018, 21:46:33
Dziękuje za szybką odpowiedź, poćwiczyłem wg twojego linka z 4h, umie już zmieniać słowa kasować lub dodawać spacje , zastępować je czymś innym , ogólnie bardzo przydatna lekcja,nie umie natomiast zmusić skryptu do wykonania podmiany x znaków po określonym ciągu , dodam również ze jestem bardzo początkującym w php a ułatwiło by mi to pracę.Z góry dziękuje za dalsze podpowiedzi.
trzczy
17.01.2018, 22:44:02
Można tak:
.....
albo tak
.{5}
Kropka to dowlny znak niebędący końcem linii.
maax990
18.01.2018, 08:20:31
ehmm kolejne 4h na probie stworzenia czegoś poległy,za świeży w tym jestem. Pozostanie mi się poddać pewno trzeba poćwiczyć zeby nabrać skila.Prosze mi jeszcze tylko napisać czy poprzez preg_preplace mogę to zrobić w ten sposób że cześć która znam czyli "alamakotaajanie" gdzie w stringu nie znam "kota" mogę podmienić niewiadomą w sposób "ama...." gdzie niewiadome czyli kropi z gory okrestam ze to ma być np 0 i określam ilość zer jaka mam wstawić po "ama" task zeby nie zwiekszyc objętości tekstu tylko podmieniać kolejne znaki na z góry ustalona ilość zer?
viking
18.01.2018, 08:33:08
Pobaw się
http://php.net/manual/en/function.stripos.php str_replace i podobnymi. Z tego opisu ciężko wywnioskować jak ten string wygląda (stała czy zmienna ilość znaków, stały czy zmienny napis).
BTW. Zawsze mnie to razi. Ja umiem, ty umiesz, on/ona/ono umie. To tak jakbyś pisał "Ja Polaka".
maax990
18.01.2018, 08:45:38
Dziękuję za odpowiedź,jeśli źle złożyłem zdanie to sorki.Tak tego zapomniałem napisać pliki o jednym ciągu string mają od 500kb do 2000kb , string podmiany jest przykładowy a ilość miejsc podmiany (niewiadomej ....) jest w każdym pliku inna.Z str_replace korzystam już od kilku dni do czegoś innego i działa świetnie, jednak nie udało mi się tego zastosować do podmiany niewiadomych znaków.
Pyton_000
18.01.2018, 08:48:58
$str = 'alamakotaajanie';
maax990
18.01.2018, 21:26:18
Na pewno na tym poziomie wiedzy bym tego sam nie napisał .Dziekuje
Troszkę się pospieszyłem,działa ale np przy długim pliku 2mb szuka tekstu tylko do około 1/3 długości pliku.Jeśli tego nie przekroczymy to zapisze plik ze zmianami i jest luksus, jeśli natomiast przekroczymy tą długość to nie robi nic , echo nie wyrzuca na ekran nic a i plik zapisywany ma 0kb.Czy ktoś wie czemu się tak dzieje lub jak to naprawić?
SmokAnalog
18.01.2018, 21:33:32
Podaj przykład co dokładnie chcesz zamienić?
maax990
18.01.2018, 21:48:58
Dodaje pliki skrypt oraz binarka.Mam nadzieje ze nie popełniam tu jakiejś zbrodni dodając tu tego linka

.Tak może będzie najlepiej wyjaśnić o co mi chodzi.
Link
SmokAnalog
18.01.2018, 23:26:46
Co jest w tym binarnym pliku? Taka zamiana z wyrażeniami regularnymi nie wydaje mi się najlepszym pomysłem.
maax990
19.01.2018, 21:13:10
To zwykle dane sterujące,jest więc odczyt => konwersja bin2hex do ciągu znaków => preg_replace => konwersja hex2bin => zapis pliku , no i wszystko działa ale tylko na małych plikach bo jeśli podstawie np 2mb to tez zmieni ale tylko gdzieś do 1/3 długości , a później się gubi.Nie wiem czemu,oraz jak to zmienić na coś innego lub naprawić.Narazie potrzebuję tego do podmiany w plikach formatu bin, ale później będę musiał działać na zwykłych plikach tekstowych.Dodam tylko ze sama konwersja działa doskonale z samym str_replace , bo jeśli znam wszystkie znaki to ta funkcja działa doskonale na małych i dużych plikach
Nie ma żadnej innej alternatywy?
trzczy
19.01.2018, 22:39:19
Wystarczy chyba podmieniać ten kawałeczek 'ama....' Wtedy operacja zabiera mniej pamięci serwera. Czyli tak:
trueblue
19.01.2018, 22:50:59
maax990
20.01.2018, 16:21:05
trzczy strzał w dziesiątkę pliki do 2mega idą bez problemu.DZIEKUJE!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.