Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
peter13135
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]' questionmark.gif
filon
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
peter13135
napisałem jaki mam string wejściowy, i jaki chce mieć ciąg wyjściowy, chyba wystarczająco dużo
filon
chodzilo mi bardziej o to do czego to potrzebujesz, bo moze jest jakies inne rozwiazanie problemu niz podzial
peter13135
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
cojack
Temat: klasa Zaawansowany parser bbcode php5


Nie wyważaj otwartych drzwi.
tog
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
peter13135
czy ja piszę nie wyraźnie 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
Pawel_W
  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
r4xz
  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. ?>
peter13135
chyba cos nie działa

  1. $text = 'dsfdsff [cos] [innytag]lalala[/innytag] [/cos] bleble [cos]blabla[/cos] dsdfsdsffds';
r4xz
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 )

)


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.