Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podmiana określonego stringu z warunkiem
iSneeze
post 30.01.2011, 00:06:29
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2011

Ostrzeżenie: (0%)
-----


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ć...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
gorden
post 30.01.2011, 00:21:46
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

Ostrzeżenie: (0%)
-----


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


Ten post edytował gorden 30.01.2011, 00:22:49
Go to the top of the page
+Quote Post
Crozin
post 30.01.2011, 00:33:09
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


O takie coś chodzi?
Kod
/^telefon:\s+(?:<phone>[\d\-]+)$/
Go to the top of the page
+Quote Post
iSneeze
post 30.01.2011, 11:32:56
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2011

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
gorden
post 30.01.2011, 14:21:38
Post #5





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

Ostrzeżenie: (0%)
-----


  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.";
Go to the top of the page
+Quote Post
iSneeze
post 30.01.2011, 16:47:00
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.01.2011

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.06.2025 - 08:10