Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dzielenie tekstu z wyrazeniami reg.
Forum PHP.pl > Forum > PHP
dtb
jak zrobić aby podzieliło tekst:

  1. <?php
  2. $text = 'bla blabla (aa a) plep leple (bcd) bleble ble (cb a) pla plapla (abc)';
  3. ?>


aby powstało coś takiego:

  1. <?php
  2. array('bla blabla', '(aa a)', 'plep leple', '(bcd)' ...);
  3. ?>


próbowałem z preg_split, ale gdzies wcinało to co jest w nawiasach:

  1. <?php
  2. $wynik = preg_split('/([a-zA-Z0-9_ ]+)/', $tekst);
  3. ?>
ikioloak
  1. <?php
  2.  
  3. $wynik=explode(' ',$tekst);
  4.  
  5. ?>


EDIT.
Sorry faktycznie nie wczytalem sie. To co wyzej jest ZLE!
FiDO
ikioloak: radze jeszcze raz przeczytac pytanie..

  1. <?php
  2.  
  3. var_dump( preg_split('#((?<=)) )|( (?=())#', $text) );
  4.  
  5. ?>
dtb
Syper, ale znalazlem jeden blad!
kiedy '(XXX)' nie jest pomiedzy spacjami: ' (XXX) ' to wtedy tego nie traktuje tak jak powinno.
czyli
Kod
bla blabla(aa a)plep leple (bcd)

zwroci:
  1. <?php
  2. 'bla blabla(aa a)plep leple',
  3. '(bcd)'
  4. )
  5. ?>
FiDO
Nie podales w zalozeniach, ze moze sie taki przypadek zdarzyc, a z przykladu nic takiego nie wynikalo.. a ze nadgorliwosc gorsza od faszyzmu winksmiley.jpg to sie we wrozke nie bawilem...
Ale jak juz chcesz to masz:
  1. <?php
  2. preg_split('#((?<=)) *)|( *(?=())#', $text, -1, PREG_SPLIT_NO_EMPTY)
  3. ?>
dtb
dzieki, jestescie wielcy

EDIT: a własciwie FiDO jest WIELKI
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.