Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zmiana słów w stringu
Forum PHP.pl > Forum > Przedszkole
shreker
witam potrzebuję zamienić określone słowa w tekście na inne, to jest akurat proste:
  1. $string = 'Jakiś tekst zawierający różne słowo typu prawa i prawa ucznia, oraz inne.';
  2. $find = array('ucznia', 'słowo');
  3. $replace = array('uczennicy', 'słowa');
  4. $result = str_replace($find, $replace, $string);
  5. echo $result;

problem pojawia się kiedy chcę pozostawić niektóre sformułowania (np.: "prawa ucznia") niezmienione, a zawierają one słowa do podmiany (np.: "ucznia").
Pyton_000
Np.
- robisz listę zwrotów nie do zamiany
- robisz replace podmieniając ww. zwroty na coś typu ##index_z_tablicy##
- robisz normalnego replace
- robisz replace odwrotnego do pierwszego.
shreker
czyli dodaję np:
  1. $wykluczone = array('prawa ucznia', 'prawa człowieka');
  2. $result_w = str_replace($wykluczone, $replace, $string); // co zamiast $replace ?
  3.  
  4. ... questionmark.gif
Pyton_000
Coś na zasadzie:

  1. $wykluczone = ['prawa ucznia', 'prawa uczennicy'];
  2. $wykluczeniaReplace = array_map(function($value){ return "##{$value}##";}, array_keys($wykluczone));
  3.  
  4. str_replace($wykluczone, $wykluczeniaReplace, $text);
  5. // ...
  6. str_replace($wykluczeniaReplace, $wykluczone, $text);
shreker
dzięki za pomoc, zrobiłem to inaczej z wykorzystaniem "preg_replace_callback".
Pyton_000
Można na wiele sposobów smile.gif Od najprostszych się zaczyna
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.