Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php] Wyrażenia regularne - zapisanie zamienianego wyrażenia

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php] Wyrażenia regularne - zapisanie zamienianego wyrażenia

Post 23.12.2005, 16:30:59

Witam,

Chciałbym zapisać zamienione wyrażenie do zmiennej. Jakoś mi to nie za bardzo wychodzi.

Pokaże o co chodzi.

Kod: Zaznacz cały
<?
//TEKST DO ZAMIANY
$string = "
Po pierwsze, absolutnie rząd Rzeczypospolitej uważa nabycie przez UniCredit Banku BPH za niekorzystne dla polskiego rynku finansowego.

--TABELA--
aaa||bbb||ccc||ddd/n
aaa||bbb||ccc||ddd/n
aaa||bbb||ccc||ddd/n
aaa||bbb||ccc||ddd/n
--/TABELA--

W piątek w Sejmie Mikosz powiedział dziennikarzom, że w umowie prywatyzacyjnej dotyczącej Pekao SA znajduje się zakaz nabywania przez UniCredit Italiano
";


//PODMIENIAM
 $aaa =      eregi_replace(
            "--TABELA--([a-z' <>ęóąśłżźćńĘÓĄŚŁŻŹĆŃ|/  \t\n\r]{0,})--/TABELA--",
            "TABELA1",
            $string);

echo        nl2br($aaa);


Tak w skrócie wygląda skrypt. I to działa bez zastrzeżeń. Tylko że ja bym chciał cały ten ciąg, który jest między znacznikami --TABLE-- i --/TABLE-- zamienić w tekscie na TABELA1 ,a zawartość zapisać do jakiejś zmiennej. Jakoś nie mam na to pomysłu.

Jeżeli ma ktoś jakiś pomysł to będę wdzięczny :).
babejszaa
Posty: 49
Dołączył(a): 02.09.2003

Post 23.12.2005, 19:11:06

Może tak?
Kod: Zaznacz cały
$zmienna =      pregi_replace(
            "[.\n\r]*?--TABELA--([a-z' <>ęóąśłżźćńĘÓĄŚŁŻŹĆŃ|/  \t\n\r]{0,})--/TABELA--[.\n\r]*?",
            "\\1",
            $string);
$aaa =      eregi_replace(
            "--TABELA--([a-z' <>ęóąśłżźćńĘÓĄŚŁŻŹĆŃ|/  \t\n\r]{0,})--/TABELA--",
            "TABELA1",
            $string);
Nie sprawdzałem, czy to działa.
Avatar użytkownikablackhole
Posty: 197
Dołączył(a): 26.09.2005
Lokalizacja: Chorzów

Post 24.12.2005, 16:02:18

@blackhole - nie ma funkcji pregi_replace :P

Co do pytania to mozna tak:
Kod: Zaznacz cały
<?
preg_match_all( '%--TABELA--(.*?)--/TABELA--%si', $string, $matches, PREG_SET_ORDER );
// print_r( $matches );
$i=0;
preg_replace( '%--TABELA--.*?--/TABELA--%sei', '"TABELA".++$;', $string );
?>

Powinno śmigać - teraz wszystkie wystąpienia --TABELA-- --/TABELA-- będą zapisywane do zmiennej $aMatches[1], jak nie to poczytaj dokumentacje dotyczącą preg_match_all
Avatar użytkownikabendi
Marek Będkowski

junkie

Posty: 2867
Dołączył(a): 08.12.2003
Lokalizacja: Wrocław


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 50309 zarejestrowanych użytkowników.
Najnowszy użytkownik: arale


Nasi użytkownicy napisali:

  • 935438 wiadomości
  • w 246473 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)