[Gotowiec: PHP] Wyszukiwanie i zamienianie ciągu znaków

php zamiana znaków Ostatnio napotkałem na 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
?>
VN:F [1.9.7_1111]
Głosy: +7 (Głosy na Tak: 8, Głosy na Nie: 1, Wszystkich głosów: 9)
Kategoria: PHP, Webmaster
Tagi:

Na czym zarabiam ?

23 odpowiedzi na „[Gotowiec: PHP] Wyszukiwanie i zamienianie ciągu znaków

  1. Jakby to powiedzieć… czas zmienić edytor tekstowy. Może na sublime text 2? :)

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  2. Tam nie ma limitów ?

    Jakoś do notepad++ się przyzwyczaiłem.

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  3. 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 :)

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  4. Nie ma tam limitu znakowego. Pewnie wklejałeś łamanie lini, które trzeba przed wklejeniem zastąpić znakami rozszerzonymi.

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
    okazwłoka :
  5. @arve_lek nie zauważyłem takowych

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  6. 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 :)

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  7. Sprawdziłem dla 2k znaków. Nie chce mi się więcej wklejać ;)

    No patrz: wszyscy się doczepili limitów, zamiast chwalić za kod :)

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
    okazwłoka :
  8. :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

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  9. 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?

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  10. 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.

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  11. 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().

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  12. Pewnie i można byłoby tak zrobić :D

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  13. 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.

    VA:F [1.9.7_1111]
    Głosy: +2 (Tak: 2, Nie: 0)
  14. Takie było właśnie założenie skryptu, żeby było dopasowanie ścisłe :)

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  15. 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..

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  16. Ja tam używam sublime text 2 :)

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  17. dziękuje za skrypt właśnie czegoś takiego szukałem :)

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  18. Nigdy nie szukałem tak długiego ciągu znaków, ale może się przydać w przyszłości

    VA:F [1.9.7_1111]
    Głosy: +1 (Tak: 1, Nie: 0)
  19. Na szczęście nie muszę wyszukiwać takich długich ciągów

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  20. Właśnie mi się przydał! :)

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  21. hmm przecież istnieje funkcja str_replace() ;)

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  22. Kod bym poprawił, zamiast strtolower użyłbym mb_strtolower, inaczej możesz mieć małą niespodziankę z polskimi literami.

    VA:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)
  23. Jaką niespodziankę ?:)

    Mi z polskimi literami skrypt działa poprawnie.

    VN:F [1.9.7_1111]
    Głosy: 0 (Tak: 0, Nie: 0)