Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Podmiana określonego stringu z warunkiem
Forum PHP.pl > Forum > Przedszkole
iSneeze
W jaki sposób podmienić ciąg znaków, który składa się z treści zmiennej i niezmiennej? Przykładowo mam:
telefon: 0-987-654-321
Numer telefonu będzie się zmieniał, więc w jego miejsce wstawiłbym /^[0-9\-]+$/D, ale jak połączyć to z wartością niezmienną, w tym przypadku ze słowem "telefon: "?

Jakoś nie bardzo mam pomysł jak powiedzieć to PHP i jakiej funkcji zastosować...
gorden
Emm.. może jaśniej?

  1. $str = 'telefon: 0-987-654-321';
  2. $str = explode(' ', $str);
  3. echo $str[1]; //wyswietli 0-987-654-321
Crozin
O takie coś chodzi?
Kod
/^telefon:\s+(?:<phone>[\d\-]+)$/
iSneeze
Ok, a więc inny przykład - mam takie oto wyrazy zapisane w $zmienna:
  1. $zmienna = "żyto owies jęczmień";
  2. $true = "zboże";

Jak powiedzieć PHP, że ma zamienić wartość $zmienna na wartość $true jeżeli na początku będzie słowo żyto, na końcu jęczmień, a pomiędzy tymi dwoma wyrazami znajdzie się dowolna kombinacja znaków od a do z oraz spacji.

Więc jeżeli będę miał w tej zmiennej "żyto owies jęczmień" to warunek zostanie spełniony (pomiędzy żyto, a jęczmień mamy kombinacje liter oraz dwie spacje) i wówczas wartość $zmienna zostanie nadpisana wartością $true, w tym przypadku słowem zboże. To samo będzie z "żyto pszenica jęczmień", ale już nie z "żyto 45 jęczmień" (gdyż występują cyfry, o których nie było w warunku mowy).
gorden
  1. $zmienna = 'żyto owies jęczmień';
  2. $true = 'zboże';
  3. $oddzielenie = ' '; //znak oddzielajacy stringi, w tym przypadku spacja
  4. $poczatkowe_slowo = 'żyto'; //slowo jakie ma byc na poczatku
  5. $koncowe_slowo = 'jęczmień'; //slowo jakie ma byc na koncu
  6.  
  7. if(is_string($zmienna)) {
  8. if(stristr($zmienna, $oddzielenie)) {
  9. $ex = explode($oddzielenie, $zmienna);
  10. $num = 0;
  11. while(true) {
  12. if($ex[$num+1] !== null) $num++;
  13. else break;
  14. }
  15. if($ex[0] == $poczatkowe_slowo && $ex[$num] == $koncowe_slowo) $zmienna = $true; //warunek i podmiana wartosci $zmienna na $true
  16. else echo "Warunek nie spełniony, zmienna nie podmieniona.";
  17. } else echo "Nie znaleziono ".$oddzielenie." w ".$zmienna;
  18. } else echo $zmienna." nie jest stringiem.";
iSneeze
Dzięki, ale znalazłem w swoich plikach łatwiejszy sposób:
  1. $string = preg_replace('#żyto[a-zA-ZęółśążźćńĘÓŁŚĄŻŹĆŃ ]+jęczmień#si','zboże', $string);
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.