Witam,

  1. <?php
  2. // mam ciąg na przykład taki:
  3. $line = "text#%innytest%#ostatni#text#%#a moze nie";
  4.  
  5. // i chce robić go na kawałki za pomocą:
  6. $arrParts = preg_split("/#%#|#%|%#|%/", $line);
  7. print_r($arrParts);
  8. ?>


w wyniku mam zgodnie z założeniem:
Kod
Array
(
    [0] => text
    [1] => innytest
    [2] => ostatni#text
    [3] => a moze nie
)


chcę teraz tak zmienić kod, w wyniku mieć:
Kod
Array
(
    [0] => text
    [1] => innytest
    [2] => ostatni text
    [3] => a moze nie
)

czyli po prostu usunięcie hasha z wyniku.

jak to zrobić za pomocą wyrażenia regularnego aby ten hash usunąć jeszcze przed preg_split(), inaczej, co wpisać w miejsce znaków zapytania (questionmark.gif) poniżej:

  1. <?php
  2. $line = "text#%innytest%#ostatni#text#%#a moze nie";
  3.  
  4. $line = preg_replace( questionmark.gif, " ", $line);
  5.  
  6. $arrParts = preg_split("/#%#|#%|%#|%/", $line);
  7. print_r($arrParts);
  8. ?>


PS: Oczywiście wiem, że mogę zrobić to używając jakiejś pętli, lecz nie interesuje mnie takie rozwiązanie, więc proszę go nie proponować. Chcę do tego celu koniecznie użyć wyrażeń regularnych.

---- rozwiązanie

Już sobie poradziłem:

linia z preg_replace powinna wygladać:
  1. <?php
  2. $line = preg_replace( "/([^%])(#)([^%])/", '${1} $3', $line );
  3. ?>

nie wiem czy jest to optymalny sposób ale mi zadziałał.

Pozdrawiam