Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Ostatni nawias, wyrażenie reguralne.
kamilos12
post 3.06.2010, 12:45:24
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.03.2010

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


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
Go to the top of the page
+Quote Post
tehaha
post 3.06.2010, 12:48:18
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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
Go to the top of the page
+Quote Post
kamilos12
post 3.06.2010, 12:53:25
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.03.2010

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


Wydaje mi się że bardziej optymalnie było by użyć wyrażenia regularnego?
Go to the top of the page
+Quote Post
Kildyt
post 3.06.2010, 13:11:39
Post #4





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


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.


--------------------
Go to the top of the page
+Quote Post
tehaha
post 3.06.2010, 13:47:04
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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;
Go to the top of the page
+Quote Post
kamilos12
post 3.06.2010, 13:53:58
Post #6





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.03.2010

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


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ć?
Go to the top of the page
+Quote Post
tehaha
post 3.06.2010, 13:58:25
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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.
Go to the top of the page
+Quote Post
kamilos12
post 3.06.2010, 14:03:35
Post #8





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 20.03.2010

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


Dzięki smile.gif Już rozumiem, pozdrawiam smile.gif
Go to the top of the page
+Quote Post
phoenix84
post 6.08.2010, 02:45:08
Post #9





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

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


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 11:36