Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PCRE: jak napisac rownanie (ZMIENNA)(zaznacz)(ZMIENNA)
hihihi
post
Post #1





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

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


Witam,

Mam taki maly problem,
otoz nie mam pojecia, jak napisac rownanie dla takiego tekstu

  1. Witaj Marek, Twoje saldo to 493pln. Marek jest ok


Gdzie obecna moja skladnia PCRE to

/Witaj (.*),(.*)////////JAK ZROBIC odwolanie do zmiennej $1 ?

Chodzi mi o to, aby zaznaczyc wszystko co jest pomiedzy slowem Marek. Czyli ", Twoje saldo to 493pln. "

Problem tkwi w tym, ze imie sie zmienia dla kazdego uzytkownika. Ma ktos jakis pomysl??

Z gory dziekuje

Ten post edytował hihihi 29.05.2009, 20:57:31
Go to the top of the page
+Quote Post
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


  1. <?php
  2. $text    = 'Witaj Marek, Twoje saldo to 493pln. Marek jest ok';
  3. $name    = 'Marek';
  4. $pattern = sprintf('/%1$s(.*)%1$s/', $name);
  5. preg_match($pattern, $text, $matches);
  6. echo $matches[1];
  7. ?>


Ten post edytował nexis 29.05.2009, 21:03:48
Go to the top of the page
+Quote Post
hihihi
post
Post #3





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

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


Wiem, ze tak można.

Ale załóżmy, że "Marek" to zmienna. Równie dobrze, może to być Zbychu czy Zdzichu.

Czy da sie taki myk zrobic w pcre czy trzeba kombinować?

Nie jestem pewien, czy można takie równanie napisac w pcre, tak aby IMIE było zmienną o różnych wartościach. Załóżmy że IMIE to [a-zA-Z0-9]

więc jak można odwołać się do zmiennej ?

thx

Ten post edytował hihihi 29.05.2009, 22:12:42
Go to the top of the page
+Quote Post
nexis
post
Post #4





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Cytat(hihihi @ 29.05.2009, 22:13:16 ) *
Ale załóżmy, że "Marek" to zmienna.

A w moim kodzie niby czym jest?
Cytat(hihihi @ 29.05.2009, 22:13:16 ) *
Równie dobrze, może to być Zbychu czy Zdzichu.

Taka jest właśnie natura zmiennej.

Możesz jeszcze wyszukać imienia, ale na podstawie informacji, które podałeś, trudno stwierdzić jaką formę może przyjąć całe wyrażenie, w którym szukamy, ale może mimo wszystko przyda ci się poniższe rozwiązanie:

  1. <?php
  2. // Wyrażenie
  3. $text    = 'Witaj Marek, Twoje saldo to 493pln. Marek jest ok';
  4. // Szukanie imienia
  5. $pattern = '/Witaj ([a-z]{3,})/i';
  6. preg_match($pattern, $text, $matches);
  7. $name    = $matches[1];
  8. // Szukanie tekstu
  9. $pattern = sprintf('/%1$s(.*)%1$s/', $name);
  10. preg_match($pattern, $text, $matches);
  11. echo $matches[1];
  12. ?>


Tutaj wychodzimy z założenia, że ciąg zaczyna się zawsze słowem Witaj, a następnie jest imię, które składa się wyłącznie ze znaków A-Z i ma conajmniej 3 znaki.

Ten post edytował nexis 29.05.2009, 21:59:23
Go to the top of the page
+Quote Post
hihihi
post
Post #5





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

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


Thx.

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale chodzi mi, czy mozna to zrobic jednym poleceniem preg ?
Go to the top of the page
+Quote Post
hihihi
post
Post #6





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

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


Cytat(belliash @ 30.05.2009, 15:32:47 ) *
a iloma jest zrobione? :|
poducz sie podstaw programowania...


w powyzszym przykladzie, uzywamy dwa razy funkcji preg_match

1 by wyznaczyc imie
2 by wyznaczyc tekst

Nie neguje tego, bo przyklad dziala wysmienicie.

Ale czy skladnia PCRE, umozliwia ominiecie 1 kroku (wyznaczenia tekstu bez wyznaczania imienia)?
Go to the top of the page
+Quote Post
hihihi
post
Post #7





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

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


Cytat(belliash @ 30.05.2009, 16:18:31 ) *
Jezeli wiesz jakie jest imie (bo musisz wiedziec skoro wyswietlasz) to po co chcesz je pozniej wyluskiwac? :|


Wiem, ze masz racje. Ale to byl prosty przyklad, nie zupelnie o to mi chodzi. Zalozmy, ze musze wyluskiwac... da rade to zrobic PCRE?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 14.09.2025 - 22:18