Zastępowanie tekstu za pomocą preg_replace
Zastępuj dopasowania ciągami zastępczymi i odwołaniami wstecznymi
Zastępowanie tekstu za pomocą preg_replace to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Sygnatura preg_replace()
preg_replace($pattern, $replacement, $subject) zwraca subject ze wszystkimi zastąpionymi dopasowaniami. Przekaż tablicę subjectów, aby przetworzyć wiele ciągów jednocześnie.
Proste zastępowanie
Zastąp wszystkie cyfry w ciągu gwiazdką.
<?php
$result = preg_replace('/\d/', '*', 'Order #12345');
echo $result; // "Order #*****"Odwołania wsteczne w zastępowaniu
Użyj $1, $2 itd. (lub \1, \2), aby wstawić przechwycone grupy do ciągu zastępującego.
<?php
$result = preg_replace('/^(\w+)\s(\w+)$/', '$2, $1', 'John Smith');
echo $result; // "Smith, John"Nazwane odwołania wsteczne
Do nazwanych grup przechwytujących można odwoływać się w zastąpieniu za pomocą ${name}.
<?php
$result = preg_replace(
'/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
'${day}/${month}/${year}',
'2025-06-15'
);
echo $result; // "15/06/2025"Zastępowanie wielu wzorców
Przekaż tablice wzorców i zastąpień, aby przetworzyć wiele reguł jednocześnie.
<?php
$result = preg_replace(
['/foo/', '/bar/'],
['baz', 'qux'],
'foo and bar'
);
echo $result; // "baz and qux"Parametr limitu
Czwarty parametr ogranicza liczbę wykonywanych zastąpień. Przekaż -1, aby usunąć limit (wartość domyślna).
<?php
$result = preg_replace('/a/', 'X', 'banana', 2);
echo $result; // "bXnXna"Parametr count
Przekaż piątą zmienną, aby otrzymać liczbę wykonanych zastąpień.
<?php
$count = 0;
$result = preg_replace('/e/', '3', 'hello everyone', -1, $count);
echo "$count replacements"; // "3 replacements"preg_replace_callback()
Gdy logika zastępowania jest złożona, użyj preg_replace_callback(), aby przetwarzać każde dopasowanie za pomocą funkcji closure.
<?php
$result = preg_replace_callback(
'/\d+/',
fn($m) => $m[0] * 2,
'Item: 5, Qty: 3'
);
echo $result; // "Item: 10, Qty: 6"Przykład usuwania znaczników HTML
Usuń wszystkie znaczniki HTML za pomocą prostego regexu (w środowisku produkcyjnym użyj strip_tags()).
<?php
$clean = preg_replace('/<[^>]+>/', '', '<b>Hello</b> World');
echo $clean; // "Hello World"Tworzenie sluga z ciągu
Przekształć tytuł w slug bezpieczny dla adresu URL.
<?php
function slugify(string $s): string {
$s = strtolower($s);
$s = preg_replace('/[^a-z0-9]+/', '-', $s);
return trim($s, '-');
}
echo slugify('Hello World!'); // "hello-world"Uwaga dotycząca wydajności
Wzorce powinny być proste; unikaj katastrofalnego cofacia. Do złożonych transformacji używaj preg_replace_callback zamiast łączenia wielu wywołań preg_replace.
Różnica w stosunku do str_replace
str_replace jest szybsze w przypadku zastępowania zwykłego tekstu. Używaj preg_replace tylko wtedy, gdy potrzebujesz możliwości wzorca regex.
Podsumowanie
preg_replace zastępuje wszystkie dopasowania wzorca. Używaj odwołań wstecznych ($1), aby ponownie wykorzystać przechwycone grupy. Używaj preg_replace_callback, gdy logika zastępowania jest dynamiczna.
Szybkie sprawdzenie
Jak odwołać się do pierwszej grupy przechwytującej w ciągu zastępującym funkcji preg_replace?
Często zadawane pytania
Czy lekcja „Zastępowanie tekstu za pomocą preg_replace” jest bezpłatna?
Tak — pełny tekst „Zastępowanie tekstu za pomocą preg_replace” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zastępowanie tekstu za pomocą preg_replace”?
Zastępuj dopasowania ciągami zastępczymi i odwołaniami wstecznymi Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Zastępowanie tekstu za pomocą preg_replace”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy składni wyrażeń regularnych
- Dopasowywanie za pomocą preg_match
- Zastępowanie tekstu za pomocą preg_replace
- Dzielenie ciągów i praktyczne wzorce