• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Pozostaw tylko wybrane znaki w zmiennej typu string

+2 głosów
580 wizyt
pytanie zadane 13 grudnia 2021 w PHP przez Bakkit Dyskutant (7,600 p.)
zamknięte 15 grudnia 2021 przez Bakkit

Cześć. Szukam już trochę po internecie i nie natrafiłem na nic, lub może po prostu coś przegapiłem.

Szukam funkcji, która pozostawi nam w zmiennej typu string tylko wybrane przez nas znaki.

Przykład:

$string = 'zmienna123';

$string_after_change = jakas_funkcja($string, ['1', '2', '3', '4', '5']);

echo $string_after_change; // output: "123"

Wiem, że w powyższym przykładzie mógłbym użyć funkcji która zamieni mi napis "zmienna" na " ", ale nie mam pojęcia czy w programie w otrzymanej zmiennej będzie napis "zmienna", "ogórek" czy "pomidor" etc, mam pewność jedynie co do cyferek.

Proszę o pomoc. 

komentarz zamknięcia: https://forum.pasja-informatyki.pl/556849/pozostaw-tylko-wybrane-znaki-w-zmiennej-typu-string?show=556851#a556851

3 odpowiedzi

+3 głosów
odpowiedź 13 grudnia 2021 przez Arkadiusz Waluk Ekspert (291,270 p.)
wybrane 15 grudnia 2021 przez Bakkit
 
Najlepsza
To może preg_replace() z wyrażeniem, które zamieni znaki inne niż wskazane na pusty string, czyli po prostu je usunie. Przykład: https://stackoverflow.com/questions/7059543/php-filter-using-preg-replace-to-allow-only-alphanumerics-and-some-punctuation
komentarz 15 grudnia 2021 przez Bakkit Dyskutant (7,600 p.)
Bardzo dziękuję za pomoc.
+1 głos
odpowiedź 13 grudnia 2021 przez Wiciorny Ekspert (282,580 p.)

napisanie wyrażenia regularnego i przefiltrowanie 

https://www.php.net/manual/en/function.preg-filter.php

preg_filter(
    string|array $pattern,
    string|array $replacement,
    string|array $subject,
    int $limit = -1,
    int &$count = null
): string|array|null

 

+1 głos
odpowiedź 13 grudnia 2021 przez qax Dyskutant (8,110 p.)

Można również samemu napisać odpowiednie pętle, które znak po znaku sprawdzą string:

<?php
$accepted_chars = array('k', 'o', 't');
$input_string = 'Ala ma kota, a kot ma Alę';
$output_string = '';
for ($loop = 0; $loop < strlen($input_string); $loop++) {
	for ($loop2 = 0; $loop2 < count($accepted_chars); $loop2++) {
		if ($input_string[$loop] == $accepted_chars[$loop2]) {
			$output_string .= $accepted_chars[$loop2];
		}
	}
}
echo $output_string;
?>

PS. To tak dla ciekawości bo nie wiem czy to najwydajniejsze rozwiązanie. smiley

Podobne pytania

0 głosów
2 odpowiedzi 1,388 wizyt
pytanie zadane 13 kwietnia 2019 w C i C++ przez Rajzok Początkujący (390 p.)
0 głosów
1 odpowiedź 379 wizyt
pytanie zadane 17 stycznia 2017 w JavaScript przez dkarski Obywatel (1,610 p.)
+1 głos
1 odpowiedź 568 wizyt
pytanie zadane 13 września 2020 w Python przez TeaCup Obywatel (1,370 p.)

93,630 zapytań

142,551 odpowiedzi

323,054 komentarzy

63,134 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2174p. - dia-Chann
  2. 2153p. - DziarnowskiJ
  3. 2123p. - Łukasz Piwowar
  4. 2077p. - raydeal
  5. 1989p. - CC PL
  6. 1957p. - Maurycy W
  7. 1954p. - Adrian Wieprzkowicz
  8. 1895p. - rucin93
  9. 1855p. - Michal Drewniak
  10. 1777p. - robwarsz
  11. 1701p. - rafalszastok
  12. 1588p. - Tomasz Bielak
  13. 1491p. - Rafał Trójniak
  14. 1377p. - ssynowiec
  15. 1208p. - Mariusz Fornal
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...