Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Działania na stringach ...
Forum PHP.pl > Forum > PHP
id4
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 ...
KaMeLeOn
http://forum.php.pl/search.php
id4
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 ...
KaMeLeOn
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]
maggot
$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
KaMeLeOn
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...?
id4
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?
id4
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
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.