Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja tekstowa, cos na ksztalt funkji substr_replace
jol.us_
post 18.07.2004, 20:43:18
Post #1





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Jest funkcja:
Kod
substr_replace($string, 'slowo', 5, 10)

ktora miedzy 5 a 10 znakiem wpisuje "slowo" w miejsce istniejacych.

Czy jest jakas funkcja (jesli tak to jaka) ktora robi to samo tylko ze zamiast nr znaku mozna tam wpisac fraze, czyli realizowalaby taki algorytm:
miedzy zlowem A i B skasuj wszystko a w to miejsce wstaw slowo C

przy czym slowo A i B to rozne stringi.


--------------------
run Forest run ...
Go to the top of the page
+Quote Post
marlowe
post 18.07.2004, 21:46:04
Post #2





Grupa: Zarejestrowani
Postów: 178
Pomógł: 0
Dołączył: 2.11.2003
Skąd: Kraków

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


Powinno się to zrobić za pomocą wyrażeń reguralnych ale 1. nie wychodzi coś mi to ;-) 2. podobno nie należy nadużywać regexp bo dłużej się wykonują. W każdym razie można to zrobić tak:
  1. <?php
  2. $string = &#092;"To jest dość ładny ciąg\"; //początkowy ciąg
  3. $short_string1 = &#092;"jest\"; //pierwszy podciąg
  4. $short_string2 = &#092;"ładny\";//drugi podciąg
  5.  
  6. $my_short_string = &#092;" bardzo \";//podciąg do zamiany
  7.  
  8. $new_string1 = explode($short_string1, $string); /* $new_string1[0] zawiera teraz \"To \" */
  9. $new_string2 = explode($short_string2, $string); /* $new_string2[1] zawiera teraz \" ciąg\" */
  10. $new_string = $new_string1[0].$short_string1.$my_short_string.$short_string1.$new_string2[1];
  11. echo $new_string;//zwraca: \"To jest bardzo łądny ciąg\"
  12. ?>

Pozdrawiam.
Bartek

Ten post edytował marlowe 18.07.2004, 21:46:45
Go to the top of the page
+Quote Post
jol.us_
post 19.07.2004, 10:01:32
Post #3





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


Probowalem to robic na wyrazeniach reguralnych ale mi tez cos nie wychodzi.

Przy okazji, jedna linijka ma blad, tak chyba jest poprawnie:
Kod
$new_string1[0].$short_string1.$my_short_string.$short_string2.$new_string2[1];


Jednak nie do konca mi o to chodzilo [moja wina bo nie napisalem]. Dane pary slow [A i B] moga wystepowac w frazie wielokrotnie i chcialbym zamieniac wszystkie. Przy czym slowo B wystepuje rowniez oddzielnie.

Algorytm mialby wygladac jakos tak:
- znajdz slowo A
- znajdz pierwsze slowo B [wystepujace po A]
- skasuj wszystko miedzy A i B
- wstaw slowo C [miedzy A i B]
- znajdz nastepne slowo A
- itd. az do konca stringu

Ten post edytował jol.us_ 19.07.2004, 10:27:38


--------------------
run Forest run ...
Go to the top of the page
+Quote Post
Dabroz
post 19.07.2004, 12:11:02
Post #4





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


  1. <?php
  2.  
  3. //a i b nie mogą zawierać pewnych znaków (trzeba je wtedy zescape'ować)
  4.  
  5. $text = preg_replace('#'.$a.'(.*?)'.$b.'#si',$a.$c.$b,$text);
  6.  
  7.  
  8. ?>


--------------------
Go to the top of the page
+Quote Post
jol.us_
post 19.07.2004, 21:08:28
Post #5





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 10.12.2003
Skąd: Kraków

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


POEZJA biggrin.gif

O to mi chodzilo. Sliczne dzieki.


--------------------
run Forest run ...
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: 6.07.2025 - 06:43