Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] wyrażenia regularne
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


mam taki string

  1. $string= 'dsfdsff [cos]lala[/cos] bleble [/cos]blabla[/cos] dsdfsdsffds';


w jaki sposób mogę za pomocą bbcode "wyjąć" teksty (podciągi?) z tego stringu spomiędzy tagów [cos] i [/cos]

zrobiłem takie coś
  1. preg_match_all('/\[cos\][[:print:]\s]*\[\/cos\]/', $string, $out);


ale to zwraca mi tablicę z jednym elementem - '[cos]lala[/cos] bleble [/cos]blabla[/cos]'
w jaki sposób mogę osiągnąć tablice z dwoma elementami : '[cos]lala[/cos]' oraz '[/cos]blabla[/cos]' (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
filon
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 13.12.2009

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


tu masz przyklad dzialania funkcji split
http://php.net/manual/en/function.split.php
jezeli napisalbys o co dokladnie chodzi to moze bardziej rozbuduje wypowiedz i doradze konkretniej

Ten post edytował filon 3.01.2010, 00:04:03
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


napisałem jaki mam string wejściowy, i jaki chce mieć ciąg wyjściowy, chyba wystarczająco dużo
Go to the top of the page
+Quote Post
filon
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 13.12.2009

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


chodzilo mi bardziej o to do czego to potrzebujesz, bo moze jest jakies inne rozwiazanie problemu niz podzial
Go to the top of the page
+Quote Post
peter13135
post
Post #5





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


ok... chcę wyodrębnić do tablicy z danego stringu podciągi spomiędzy tagów [cos] oraz [/cos], z założeniem że pomiędzy tymi tagami nie może się znaleźć string [cos](dowolne znaki)[/cos]

jeśli nie umiesz odpowiedzieć na to pytanie, to poprostu dzięki za chęci, wydaje mi się że problem wystarczająco dobrze opisałem
Go to the top of the page
+Quote Post
cojack
post
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Temat: klasa Zaawansowany parser bbcode php5


Nie wyważaj otwartych drzwi.
Go to the top of the page
+Quote Post
tog
post
Post #7





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 1.12.2009
Skąd: lublin

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


moze cos takiego:

$code = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si",'<a href=\\1>\\2</a>',$code);

a tu gdzie jest prosciej str_replace
$code = str_replace('[b]', '<strong>', $code);

juz nie pamietam dlaczego uzylem innych funkcji, nie wazne

w kazdym razie:
[ img ]http://google.com/images/porno/gates/13.jpg[/img]
pozniej dajesz tak:
  1. [ img ](.*?)[/img]
i pozniej zeby ten link zdjecia zapisac to robisz tak:
<img src="/1"> i to Ci da img src=http://google.com/images/porno/gates/13.jpg

@up
tylko po kiego grzyba sciagac jakas biblioteke z plikiem konfguracyjnym i masa innych zbednych rzeczy skoro mozna caly bbcode zapisac w jednej funckji z od jednego do powiedzmy 4 argumentow

Ten post edytował tog 3.01.2010, 01:02:33
Go to the top of the page
+Quote Post
peter13135
post
Post #8





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


czy ja piszę nie wyraźnie (IMG:style_emoticons/default/questionmark.gif) ja niechce zamienić 'dsfdsff [cos]lala[/cos] bleble [/cos]blabla[/cos] dsdfsdsffds'
w
'dsfdsff <cos>lala</cos> bleble </cos>blabla</cos> dsdfsdsffds'

tylko tak jak pisałem - wrzucić do tablicy... zresztą nie będę pisał kolejny raz tego samego
Go to the top of the page
+Quote Post
Pawel_W
post
Post #9





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


  1. $text = 'dsfdsff [cos]lala[/cos] bleble [/cos]blabla[/cos] dsdfsdsffds';
  2. $patt = '#\[cos\]([^\[]+)\[/cos\]#';
  3. preg_match_all($patt, $text, $matches);
  4. print_r($matches);


a na przyszłość
http://pl.wikibooks.org/wiki/PHP/Podstawy_...%84_regularnych
Go to the top of the page
+Quote Post
r4xz
post
Post #10





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


  1. <?php
  2.  
  3. $str = 'dsfdsff [cos]lala[/cos] bleble [cos]blabla[/cos] dsdfsdsffds';
  4. preg_match_all('/\[cos\](.*?)\[\/cos\]/', $str, $out);
  5. print_r($out);
  6.  
  7. ?>
Go to the top of the page
+Quote Post
peter13135
post
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


chyba cos nie działa

  1. $text = 'dsfdsff [cos] [innytag]lalala[/innytag] [/cos] bleble [cos]blabla[/cos] dsdfsdsffds';
Go to the top of the page
+Quote Post
r4xz
post
Post #12





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


nie wiem jak skrypt kolegi, ale mój nadal wypluwa dobrze:

Array (

[0] => Array (

    [0] => [cos] [innytag]lalala[/innytag] [/cos]

    [1] => [cos]blabla[/cos] )

[1] => Array (

    [0] => [innytag]lalala[/innytag]

    [1] => blabla )

)




Ten post edytował r4xz 3.01.2010, 21:52:04
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: 23.08.2025 - 20:01