Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_replace, ale z warunkiem
gargamel
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Mamy kod:
  1. $access = "A"; // Zmienna dotycząca dostępu do określonych elementów tekstu, w tym przypadku może to być A, B lub C
  2. $text = "[access=A]Lorem ipsum dolor sit amet[/access], consectetur adipiscing elit.
  3. [access=B]Aenean laoreet[/access] neque eu arcu consequat tempus."; //Tekst z warunkami
  4. $pattern = "{\[access=(.*?)\](.*?)\[\/access\]}";
  5. echo preg_replace($pattern, "$2", $text);


Na chwilę obecną nie robi on nic sensownego, gdyż zwyczajnie usuwa z tekstu znaczniki [access=...] [/access] i wyświetla ich zawartość.
Potrzebuję zrobić myk aby zawartość z pomiędzy [access=...] i [/access] była wyświetlana tylko wtedy, gdy wartość przypisana znacznikowi (w powyższym kodzie A lub B ) była taka sama jak określona w zmiennej $access - w tym przypadku $access="A";
Tak aby w przytoczonym przykładzie fragment [access=B]Aenean laoreet[/access] nie został wyświetlony.
Jakieś pomysły ?

Ten post edytował gargamel 15.04.2011, 19:31:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gargamel
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Dokładnie o to mi chodziło, dzięki!
Nie mogę sobie poradzić jeszcze z jedną rzeczą. Mianowicie skrypt działa dobrze jeśli $access przyjmuje wartości pojedynczego znaku (A, B, C... cokolwiek).
Jak natomiast zrobić negację 2-giego wyrazu tablicy:
  1. $patterns = array("{\[access=".$access."\](.*?)\[\/access\]}", "{\[access=[^".$access."]\](.*?)\[\/access\]}");

Jeśli $access ma wartość np.: 'A' to negację mamy: ... [^A] ... no i wszystko gra. Jeśli za $access podstawimy np.: 'Abc' to mamy: [^Abc], a więc już nie do końca to o co chodzi...
Próbowałem [^(".$access.")], ale nie działa... :/
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 17:48