![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
Witam bardzo gorąco.
Z góry muszę uprzedzić, że kiepski jestem z operacji na stringach i mam nadzieję, że znajdę tutaj pomoc w rozwiązaniu mojego problemu ... Posiadam zmienną text z forma, w której jest tzw bbcode: Kod [b]Witam [i]niemądry[/i] użytkowniku[/b] :)
Tego stringa przepuszczam przez funkcję: Kod $text=preg_replace("/[b]([^[]*)[/b]/i","<b>1</b>",$text);
$text=preg_replace("/[i]([^[]*)[/i]/i","<i>1</i>",$text); I dostaję: Kod [b]Witam niemądry użytkowniku[/b]
Dlaczego? P.S. wyraz 'niemądry' jest OK kursywą ... Mam jeszcze jedno pytanie: Kod Jak należy wyciądnąć wyraz np. id4 z zapisu:
[xxx=id4]Jakiś tekst[/xxx] Czy mogę liczyć na pomoc? Z góry dzięki ... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
-------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
Już szukałem i nie znalazłem odpowiedzi na pierwsze z pytań - jest tylko jeden kod, który w większości wykorzystuje bardzo wolne eregi_replace ...
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A stosowanie 2x preg_replace nie jest wolne?
[php:1:90115e6075]<?php $bb = Array( '1'=>"##i", '2'=>"##i", '3'=>"##i", '4'=>"##i" ); $html = Array( '1'=>'<b>', '2'=>'</b>', '3'=>'<i>', '4'=>'</i>', ); // itd... $text = preg_replace($bb, $html, $text); ?>[/php:1:90115e6075] -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 7.05.2002 Skąd: Sz-n/Wroc/Wawa Ostrzeżenie: (0%) ![]() ![]() |
$text=preg_replace("/[b]([^[]*)/i","<b>1</b>",$text);
to na czerwono nie pozwala na to aby miedzy Kod [b] a [/b]
znalazl sie jakis "[" do Kamelon'a Jesli juz czepiasz sie predkosci, to czy nie lepiej uzyc str_replace ? Poza tym w rozwiazaniu, ktore proponujesz moga pojawic sie problemy gdy ktos nie zamknie danego znacznika -------------------- /maggot/
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 680 Pomógł: 0 Dołączył: 1.10.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat $text=preg_replace("/[b]([^[]*)/i","<b>1</b>",$text);
[...] Poza tym w rozwiazaniu, ktore proponujesz moga pojawic sie problemy gdy ktos nie zamknie danego znacznika A w tym nie...? -------------------- "Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
Cytat $text=preg_replace("/[b]([^[]*)/i","<b>1</b>",$text);
to na czerwono nie pozwala na to aby miedzy Kod [b] a [/b]
znalazl sie jakis "[" do Kamelon'a Jesli juz czepiasz sie predkosci, to czy nie lepiej uzyc str_replace ? Poza tym w rozwiazaniu, ktore proponujesz moga pojawic sie problemy gdy ktos nie zamknie danego znacznika Czy to oznacza, że jeśli ten fragment zaznaczony na czerwono usunę, to nie będzie problemu? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 223 Pomógł: 1 Dołączył: -- Skąd: Rogożnik /K-ce/ Ostrzeżenie: (0%) ![]() ![]() |
A tak BTW, to znalazłem porównanie szybkości działania niektórych funkcji w prostym przykładzie zamiany wiemu spacji ...
Zamiana wielu spacji na jedną. Czasy wykonania dla różnych sposobów Uwaga: Jak widać metoda str_replace() w tym wypadku poległa bo nie zamienia nieparzystej liczby spacji koło siebie Metoda Czas Text ereg_replace 0.0740 Ala ma kota i trzy psy i do tego 8 owieczek str_replace 0.0006 Ala ma kota i trzy psy i do tego 8 owie preg_replace 0.0013 Ala ma kota i trzy psy i do tego 8 owieczek while 0.0018 Ala ma kota i trzy psy i do tego 8 owieczek Link do artykułu: http://www.kedziora.info/testy/?id=21 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:59 |