Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Ostatni nawias, wyrażenie reguralne.
Forum PHP.pl > Forum > Przedszkole
kamilos12
Witam!

Chciałbym usunąć z tekstu ostatni nawias, wraz z zawartością, np.

  1. $string = 'Lorem ipsum dolor sit amet, (consectetur) adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, (quis) nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est (laborum).';


Zwróci:

  1. $string = 'Lorem ipsum dolor sit amet, (consectetur) adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, (quis) nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';


Pozdrawiam i proszę o wskazówki smile.gif
tehaha
myślę, że nie ma konieczności używania wyrażeń regularnych, zapoznaj się z tą funkcją i przykładami - http://php.net/manual/en/function.strrpos.php, znajdź pozycję ostatniego i przedostatniego nawiasu, a potem usuń znaki między tymi pozycjami
kamilos12
Wydaje mi się że bardziej optymalnie było by użyć wyrażenia regularnego?
Kildyt
Jeżeli treść będzie dynamiczna to zdecydowanie wyrażenie regularne.
Sprecyzuj swój post. Opisałeś, że chciałbyś usunąć nawiasy wraz z zawartością, a w przykładnie zawartość została.
Poczytaj o wyrażeniach regularnych w PHP. Co prawda nie jest to łatwy kawałek tortu, ale na prawdę warto bo zdecydowanie upraszcza programowanie.
tehaha
Cytat(Kildyt @ 3.06.2010, 14:11:39 ) *
Jeżeli treść będzie dynamiczna to zdecydowanie wyrażenie regularne.

a jaka to różnica czy dynamiczna czy statyczna? przecież funkcja strrpos() służy właśnie do ustalania pozycji, więc moim zdaniem jak najbardziej się tutaj nadaje

Cytat
Wydaje mi się że bardziej optymalnie było by użyć wyrażenia regularnego?

zależy co rozumiesz przez słowo optymalnie, szybciej działające czy mniej kodu? Bo funkcje typu preg_replace(), są stosunkowo wolne i jak dotąd we wszystkich sytuacjach gdzie można było zastąpić preg_replace(), kilkoma prostszymi funkcjami okazywało się to dużo szybsze, ale jak ktoś napisze do tego wyrażenie regularne to chętnie zrobię jakiś test porównawczy

tu masz kod do usunięcia ostatnich nawiasów bez zawartości z podanego stringa(czyli tak jak w przykładzie, który podałeś):
  1. $string = 'Lorem ipsum dolor sit amet, (consectetur) adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, (quis) nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est (laborum) fas fsdaf sdaf sadfa ssad f.';
  2. $last_open_bracket = strrpos($string, '(');
  3. $last_close_bracket = strrpos($string, ')');
  4. $string = substr_replace($string,'', $last_open_bracket, 1);
  5. $string = substr_replace($string,'', $last_close_bracket-1, 1);
  6. echo $string;
kamilos12
Chodziło mi o usunięcie wraz z zawartością (pomyliłem się), nie mam pojęcia jak to zrobić przy użyciu strrpos, możecie mnie naprowadzić?
tehaha
tu masz usunięcie razem z zawartością:
  1. $string = 'Lorem ipsum dolor sit amet, (consectetur) adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, (quis) nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est (laborum) fas fsdaf sdaf sadfa ssad f.';
  2. $last_open_bracket = strrpos($string, '(');
  3. $last_close_bracket = strrpos($string, ')');
  4. $cut = substr($string, 0, $last_open_bracket).substr($string,$last_close_bracket+1);
  5. echo $cut;


przy pomocy funkcji strrpos() pobierasz ostatnie występowanie nawiasu otwierającego i zamykającego, apotem wycinasz sobie początkowy i końcowy fragment stringa i je łączysz.
kamilos12
Dzięki smile.gif Już rozumiem, pozdrawiam smile.gif
phoenix84
moze dolacze sie do tematu...

a jak usunac ostatnie powtorzenie jakiegos stringa, chodzi mi tu o tagi html... albo o jakas funkcje "odwrotna" do strpos... bo strrpos paradoksalnie dziala inaczej (szuka char a nie string) i mam problem... zabawa DOM nei wchodzi w gre, bo strona nie jest moja, a ma bledy i wywala (ja tylko zczytuje z niej troche informacji - za zgoda autora jakby ktos sie czepial tongue.gif)...

jakies pomysly? moze istnieje funkcja o ktorej nie wiem? swoja droga, moze ktos wie, po co strrpos dziala jak strrchr, a nie odwrotnie do strpos jak nazwa sugeruje?

k.
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.