Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Preg_replace
Forum PHP.pl > Forum > Przedszkole
infoo1
Mam kod:
  1. <?php
  2. $this->cnt = preg_replace('(.*?)ť Grupy(.*?)cos/s*/cos2(.*?)cos3: /$*/wygenerowano w (.*?)ms obecny czas: (.*?)','${3}',$this->cnt);
  3. ?>

Wyświetla:
Cytat
Warning: preg_replace() [function.preg-replace]: Unknown modifier '�'

Co jest źle (oprócz wszystkiego winksmiley.jpg)?

edit:
tam, gdzie jest " t' " powinno być "»".
webdice
Pierwszy i ostatni znak musi być taki sam.

  1. <?php
  2. $this->cnt = preg_replace('#(.*?)ť Grupy(.*?)cos/s*/cos2(.*?)cos3: /$*/wygenerowano w (.*?)ms obecny czas: (.*?)#','${3}',$this->cnt);
  3. ?>
infoo1
Zamieniłem na:
  1. <?php
  2. $this->cnt = preg_replace('#(.*?)ť grupy(.*?)cos(s*)cos2(.*?)cso3: ($*)wygenerowano w (.*?)ms obecny czas: (.*?)#','${3}',$this->cnt);
  3. ?>

Pokazuje:
Cytat
Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 60
erix
Kod
($*)

WTF?
infoo1
http://www.antylameriada.net/wphppreg/
Cytat
() Podwyrażenie, grupowanie wzorców
* Zero, jedno lub więcej wystąpień poprzedzającego wzorca. Równoważne z {0,}
$ Koniec linii

Czyli tam może być 0-nieskończoność nowych linii.

Edit:
I jeszcze jedno pytanie regexów:
mam takie coś:
Cytat
Linia 1
Linia 2
Linia 3
Linia 4
Linia 5
Linia 1
Linia 2
Linia 3
Linia 4
Linia 5
Linia 1
Linia 2
Linia 3
Linia 4
Linia 5
....
oczywiście, treść będzie różna w poszczególnych blokach (5 linii). Co dać jako 1st argument dla preg_split(), aby wszystkie bloki (każdy ma 5 linii) dało do arraya?
erix
Cytat
* Zero, jedno lub więcej wystąpień poprzedzającego wzorca. Równoważne z {0,}

Ale nie podałeś wzorca, który ma się powtarzać. winksmiley.jpg Masz sam modyfikator, ale klasy znaków/wyrażenia przed gwiazdką nie podałeś. Stąd wywalany przez parser błąd.

Cytat
Compilation failed: nothing to repeat at offset 60

Czytaj ze zrozumieniem: kompilacja zakończona niepowodzeniem - nie ma niczego do powtórzenia (chodzi o gwiazdkę).
pinochet
dodam jeszcze ze koniec wiersza w wyrażeniach regularnych to nie znak końca wiersza. A same regexy nie obsługują wielobajtowych zestawów znaków czymkolwiek miałobybyć to: "ť"
infoo1
Cytat
Czytaj ze zrozumieniem: kompilacja zakończona niepowodzeniem - nie ma niczego do powtórzenia (chodzi o gwiazdkę).
To wiedziałem, tylko nie widziałem, że ($*) jest źle

Cytat
dodam jeszcze ze koniec wiersza w wyrażeniach regularnych to nie znak końca wiersza.
:/
Cytat
A same regexy nie obsługują wielobajtowych zestawów znaków czymkolwiek miałobybyć to: "ť"
Czym zastąpić?




To jest treść:
Cytat
Punkt odniesienia
zmienne rzeczy
Punkt odniesienia 2
to trzeba pobrać
zmienne rzeczy

Jak pobrać to coś na czerwono, korzystając z 2 punktów odniesienia, które są stałe?
erix
Cytat
A same regexy nie obsługują wielobajtowych zestawów znaków czymkolwiek miałobybyć to: "ť"

Nigdy nie używałem tego typu wyrażeń, ale jest taki modyfikator u - unicode dla wyrażeń.

Cytat
Jak pobrać to coś na czerwono, korzystając z 2 punktów odniesienia, które są stałe?

Użyć tych dwóch punktów odniesienia, stałe zabezpieczyć sleszami, podpowiedź: preg_quote" title="Zobacz w manualu PHP" target="_manual.
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.