Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] zastepowanie stringa zawartego miedzy znakami
grubas
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 28.11.2006

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


tak jak w temacie, czyli poiedzmy ze mam string "czesc [!] jestem fajny ale nie potrafie [(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ] tego zrobic" i czy mozna zastapic te znaki powmiedzy [!] a [(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ] czymkolwiek innym, to troche jak bbcode a wlasciwie calkiem tak ale probowalem tak dzialac jak tam i cos nie tak, jakis inny sposob, jakies magiczne funkcje? szukalem ale nic ciekawego nie widzialem, moze zle patrzylem :/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Mary$
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 19.02.2007
Skąd: 3city

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


  1. <?
  2. /* SKRYPT PODMIENIAJĄCY CIĄG ZNAKÓW */
  3.  
  4. $string = 'czesc [!] jestem fajny ale nie potrafie [!!] tego zrobic'; //ciąg znaków
  5. $rep_txt = 'jakiś text'; //tekst, którym roztanie zastąpiony text z pomiędzy znaczników
  6.  
  7. $pos1 = strpos($string,'[!]'); //pozycja "[!]" w stringu
  8. $pos2 = strpos($string,'[!!]'); // pozycja "[!!]" w stringu
  9. $len = $pos2 - $pos1; //długość tekstu do podmiany (zawartego pomiędzy znacznikami)
  10.  
  11. $val = substr($string,$pos1+3,$len-3); //tekst do podmiany 
  12. $res = str_replace($val,$rep_txt,$string);//podmiana tekstu z pomiędzy znaczników na tekst z $rep_txt
  13.  
  14. Echo $res;
  15. ?>

Jak widzisz masz tam kod
  1. <?php
  2. $val = substr($string,$pos1+3,$len-3);
  3. ?>

zawiera on "+3" oraz "-3" ze względu na to, że Twój znacznik "[!]" ma trzy znaki, a funkcji strpos()" title="Zobacz w manualu PHP" target="_manual podaje pozycję pierwszego znaku, czyli "[". Będziesz musiał sobie to pozmieniać w zależności od długości znaczników.

Efekt końcowy
Cytat
czesc [!]jakiś text[(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ] tego zrobic


Ty zapewne będziesz potrzebował funkcji, więc po prostu wstawisz sobie do tej funkcji odpowiednią ilość takich procedur, a jako parametr podasz stringa, którego chcesz edytować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Mary$ 20.02.2007, 13:13:40
Go to the top of the page
+Quote Post
siemakuba
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


@Mary$: chęci masz z pewnością dobre, ale twój kod można ograniczyć do jednej linii:
  1. <?php
  2. $string = 'czesc [!] jestem fajny ale nie potrafie [!!] tego zrobic';
  3. $string = str_replace(array('[!]', '[!!]'), array('jeden wykrzyknik', 'dwa wykrzykniki'), $string);
  4. ?>


str_replace" title="Zobacz w manualu PHP" target="_manual, preg_replace" title="Zobacz w manualu PHP" target="_manual

pozdr.
Go to the top of the page
+Quote Post
Mary$
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 19.02.2007
Skąd: 3city

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


@siemakuba: tylko, że twój kod zamienia wykrzykniki na coś innego, a mój zamienia to, co jest między nimi. Czy ja coś źle zrozumiałem? Moży tylko to, że efekt końcowy powinien być bez wykrzykników, ale to sie da skorygować
Go to the top of the page
+Quote Post
siemakuba
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

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


Cytat(Mary$ @ 20.02.2007, 13:19:37 ) *
@siemakuba: tylko, że twój kod zamienia wykrzykniki na coś innego,


Prawda, mea culpa. nie zagłębiłem się... eh.

pozdr.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 16:10