Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wyrażenia regularne - zmiana tekstu na zmenne itp.
ITI
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.06.2002
Skąd: Z US - Układ Słoneczny :)

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


Hello (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Szukam wszedzie, ale znajduje tylko fragmenty informacji, z ktorych niestety nie udaje mi sie zlozyc calosci ;(

Potrzebuje zamienic tekst w formacie [obrazekX nazwa autor] na odpowiednia wartosc zmiennej $obrazekX gdzie X jest numerkiem od 1 do 9 (lub w ogole jakims numerem), a tym samym numerem obrazka, nastepnie jest nazwa, ktora jest nazwa obrazka, no i autor (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Znalazlem tutaj na forum fajny skrypt:

  1. <?php
  2. $text1 = 'text 1 replace';
  3. $text2 = 'text 2 replace';
  4. $s = '[text1] 
  5.  
  6. [text2] ';
  7.  
  8. echo preg_replace( '#[(textd+)]#sie', 'empty($1)?"":$1', $s );
  9. ?>

ale niestety nie rozwiazuje on moich problemow. W ogóle to nie bardzo radze sobie z tymi wyrazeniami ;(

Jeszcze raz dla wyjasnienia
mam w tekscie:
[obrazek1 nazwa autor]
a chce to miec:
obrazek1 - ma wyswietlac wartosc zmiennej $obrazek1, ktora wczesniej utworzylem
nazwa ma zawierac nazwe obrazka
a autor = autora

Potem to wszystko ma sie prezentowac np. w formie <img src="$obrazek1"> - 'nazwa'. Autorem obrazka jest: 'autor'.

Z gory dzieki za wszelkie propozycje i podpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ps. czy ktos moze przy okazji wyjaznic co to sa te ?"": w tym kodzie, ktory wydnieje na gorze (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Jawor
post
Post #2





Grupa: Zarejestrowani
Postów: 73
Pomógł: 2
Dołączył: 1.10.2003

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


Mozna to zrobic bez wyrazen regularnych uzywajac nastepujacych funkcji:

strlen() - sprawdzanie dlugosci danego ciagu
strpos() - sprawdzanie na ktorym miejscu znajduje sie pozadany znak
substr() - wycinanie z ciagu tekstu od miejsca n do m
Go to the top of the page
+Quote Post
be2k
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


mozna i bez regularnych ale ile byloby pieprzenia to ja dziekuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

jesli dobrze zrozumialem to masz w tekscie takie ciagi znakow:
[obrazek1 Jezioro Janek]
i z tego masz uzyskac
<img src="$obrazek1"> - Jezioro. Autorem obrazka jest Janek
gdzie $obrazek1 to wartosc tej zmiennej, zgadza sie?

jesli tak to tu masz rozwiazanie:
  1. <?php
  2. $str = "[obrazek1 Domek_nad_jeziorem Janek]";
  3.  
  4. $pattern = array(
  5. '/[(obrazek[0-9]+) ([a-z0-9_-]+) ([a-z0-9_-]+)]/i',
  6. '/(obrazek[0-9]+)/ie'
  7. );
  8.  
  9. $replacement = array(
  10. '<img src="1"> - 2. Autorem obrazka jest: 3',
  11. 'empty($1)?"no_image.gif":$1'
  12. );
  13.  
  14. $str = preg_replace($pattern, $replacement, $str);
  15. ?>


tylko ze nazwa i autor musza byc jednym ciagiem znakow (zamiast spacji - lub _) co widac powyzej. nie wiem czy brales to pod uwage. mozna to ominac stosujac zapis:
$str = "[obrazek1 'Domek nad jeziorem' 'Janek']";
i wtedy trzeba nieznacznie zmodyfikowac wyrazenie regularne
Go to the top of the page
+Quote Post
ITI
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.06.2002
Skąd: Z US - Układ Słoneczny :)

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


Fajne, dziala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) a mozna cos jeszcze napisac na temat tego 'Domek nad jeziorem' (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
be2k
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


teraz mozesz dawac opisy kilkuwyrazowe i autora kilkuwyrazowego:
  1. <?php
  2. $str = "[obrazek1 'Domek nad jeziorem' 'Jan Kowalski']";
  3. $obrazek1 = "domek.gif";
  4. $pattern = array(
  5. '/[(obrazek[0-9]+) ["']([a-z0-9 _-]+)["'] ["']([a-z0-9 _-]+)["']]/i',
  6. '/(obrazek[0-9]+)/ie');
  7. $replacement = array(
  8. '<img src="1"> - 2. Autorem obrazka jest: 3',
  9. 'empty($1)?"no_image.gif":$1');
  10. $str = preg_replace($pattern, $replacement, $str);
  11. ?>


jesli chodzi o ciag znakow, ktory masz podmieniac (czyli w przykladzie zmienna $str) to ciag ten moze byc zarowno objecty cudzyslowem (a w srodku apostrofy):
  1. <?php
  2. $str = "[obrazek1 'Domek nad jeziorem' 'Jan Kowalski']";
  3. ?>


jak i apostrofem a w srodku cudzyslow:
  1. <?php
  2. $str = '[obrazek1 "Domek nad jeziorem" "Jan Kowalski"]';
  3. ?>


jesli nie znajdzie zmiennej $obrazekX to wstawia obrazek o nazwie "no_image.gif"
Go to the top of the page
+Quote Post
ITI
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.06.2002
Skąd: Z US - Układ Słoneczny :)

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


Dzięki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Działa idealnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) chyba nigdy bym na to nie wpadł jak zrobić takie połączenie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) No... moze by się udało za pare miesięcy (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Jeszcze raz dzięki.
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: 22.08.2025 - 12:45