Ostatnio napotkałem pewien problem w notepad++, a mianowicie musiałem wyszukać pewien ciąg znaków i go zamienić na inny ciąg znaków. Jak się szybko okazało w notepad++ mamy limit znaków w polu „zamień na”. Zmartwiło mnie to trochę i musiałem napisać prosty skrypt w PHP. Mam nadzieję, że komuś się przyda :)
<?php $szukana_fraza = 'Szukany ciąg znaków'; $dodatek = 'Ciąg znaków, na który zamieniamy'; $input = file('data.txt'); // plik wejściowy $output = array(); foreach ($input as $linia) { $linia = trim($linia); if (strpos(strtolower($linia), strtolower($szukana_fraza)) !== FALSE) $linia .= $dodatek; $output[] = $linia; } file_put_contents('wynik.txt', implode("\r\n", $output)); // plik wyjściowy ?>
23 komentarze
Jakby to powiedzieć… czas zmienić edytor tekstowy. Może na sublime text 2? :)
Tam nie ma limitów ?
Jakoś do notepad++ się przyzwyczaiłem.
Już od bardzo dawna nie używam notepad++, ostatnio cenie sobie wspomniany wyżej Sublime Text 2. Warto spróbować, a szybko Ci się spodoba :)
Nie ma tam limitu znakowego. Pewnie wklejałeś łamanie lini, które trzeba przed wklejeniem zastąpić znakami rozszerzonymi.
@arve_lek nie zauważyłem takowych
Tzn. wkleiłem ciąg znaków:img src=”{nazwa.jpg|nazwa1.jpg}”
Tylko tych nazw obrazków było od groma i jest limit z tego co widzę.
Dla ciągu: img src=”{nazwa.jpg|nazwa1.jpg}”
zamieniło mi ładnie. Ale już dla dłuższego nie. Ucięło mi w połowie.
Także śmiem twierdzić, że jednak są limity :)
Sprawdziłem dla 2k znaków. Nie chce mi się więcej wklejać ;)
No patrz: wszyscy się doczepili limitów, zamiast chwalić za kod :)
:D
2k znaków to jest mało :)
ctr+c + ctr+v i w 10 sekund będziesz miał od groma powielonych znaków z tych 2k :P
Ten „sublime text 2” nie radzi sobie z kodowaniem charset=iso-8859-2?
Jak wrzucam html z takim kodowaniem to treść się sypie, wie ktoś gdzie to zmienić, żeby dobrze odczytał mi polskie znaczki?
Ech, cudze chwalicie swego nie znacie… Spróbuj Pajączka i CTRL+SHIFT+R i masz wielodokumentowe wyszukiwanie, wieloliniowe stringi i pełne wsparcie dla kodowania znaków (różnego) w wyszukiwanym tekście.
A nie mogles po prostu zastosowac funkcji str_replace() . Nie trzeba by bylo wtedy uruchamiac petli, a sam plik wczytalbys do stringa funcja file_get_contents().
Pewnie i można byłoby tak zrobić :D
Zapomniałaś dodać, że tego typu kod, znajdzie tylko ścisłe dopasowanie tekstu. Wystarczy, że za znajdzie się kropka, przecinek lub spacja i linijka nie zostanie podmieniona. W tego typu działaniach o wiele bardziej przydatne jest użycie wyrażeń regularnych.
Takie było właśnie założenie skryptu, żeby było dopasowanie ścisłe :)
No ciekawe, może się przyda, choć osobiście nie szukałem nigdy tak długiego ciągu znaków. Pewnie zbyt mało jeszcze wykonuję prac programistycznych..
Ja tam używam sublime text 2 :)
dziękuje za skrypt właśnie czegoś takiego szukałem :)
Nigdy nie szukałem tak długiego ciągu znaków, ale może się przydać w przyszłości
Na szczęście nie muszę wyszukiwać takich długich ciągów
Właśnie mi się przydał! :)
hmm przecież istnieje funkcja str_replace() ;)
Kod bym poprawił, zamiast strtolower użyłbym mb_strtolower, inaczej możesz mieć małą niespodziankę z polskimi literami.
Jaką niespodziankę ?:)
Mi z polskimi literami skrypt działa poprawnie.