Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Działania na stringach ...
id4
post
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 ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
KaMeLeOn
post
Post #2





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


http://forum.php.pl/search.php


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
id4
post
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 ...
Go to the top of the page
+Quote Post
KaMeLeOn
post
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
Go to the top of the page
+Quote Post
maggot
post
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/
Go to the top of the page
+Quote Post
KaMeLeOn
post
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
Go to the top of the page
+Quote Post
id4
post
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?
Go to the top of the page
+Quote Post
id4
post
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
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 Aktualny czas: 19.08.2025 - 19:59