Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Czy preg_replace dziala z polskimi literami ?
Forum PHP.pl > Forum > Przedszkole
telemach
Czy mozecie mnie nakierowac co powinienem dodac lub dopisac aby
zaczelo chwytac polskie litery ?

Sprawa wyglada tak ze

dla slowa

SUŁ - działa

SŁU - nie dziala

ŁSU - nie dziala

a chcialbym zeby dzialalo zawsze dla kazdego bo chce zamienic tag html przed slowem pisanym z duzych liter
i wlasnie kiedy polska literka wystepuje na 1 lub 2 pozycji to juz nie dziala a na 3 i kazdej kolejnej chodzi OK

testowalem konwertowanie znakow z
  1. iconv
oraz ustawianie przy pomocy

ale wciaz kiszka
Andaramuxo
Podaj kod to się zobaczy czemu nie działa.
telemach
prosze bardzo

  1. $input='<h4>SŁUGA PRZYKŁADOWY TEKST </h4>';
  2.  
  3. $wynik = preg_replace('/<h4>(\w[A-Z]+)/','<h5>\\1', $input);
  4.  
  5. echo $wynik;
  6.  
  7. $input2='<h4>SUŁGA PRZYKŁADOWY TEKST </h4>';
  8.  
  9. $wynik2 = preg_replace('/<h4>(\w[A-Z]+)/','<h5>\\1', $input2);
  10.  
  11. echo $wynik2;


taki sam kod a

wynik2 dziala poprawnie

wynik1 nie dziala

erix
Polskie znaki nie zawierają się w przedziałach a-z; nie wiem jak jest z \w.
Zyx
Jeśli masz zakodowane w Unikodzie to tak - biblioteka PCRE wbudowana w PHP posiada obsługę Unikodu, tylko musisz do wyrażenia dodać dodatkowy modyfkator:

Kod
preg_replace('/.../u', 'zamiennik', $tekst);


http://www.php.net/manual/en/reference.pcr...n.modifiers.php

na dole masz opisane szczegóły.
telemach
Zyx - czy mozesz podac jakis przyklad ?

pobieram strone ktora ma kodowanie iso-8859-2 przy pomocy file_get_contents, nastepnie zmieniam na UTF-8 korzystajac z iconv i dokonuje zamiany z przelacznikiem /u i nadal wyglada ze cos nie lapie

podobnie jak wpisze jakies slowo do pliku tekstowego z kodowaniem UTF-8

erix- ja zauwazylem ze nie zawieraja ale tylko na dwoch pierwszych pozycjach bo potem to dziala


oczywiscie cos takiego zadziala poprawnie jednakze ja chce sie ograniczyc tylko do duzych literek

  1. <h4>(\w[\x{0100}-\x{2000}]+)/u


erix
O ile funkcje ereg* są zaniechane, to z grupy mb_ nie, z tego co mi wiadomo. Może byłoby tu rozwiązaniem użycie mb_ereg.
telemach
OK widze ze ciezko do tego dojsc.

Koniec koncow udalo mi sie wynikowo zrobic tak

  1. /<h4>(\w[\x{0010}-\x{2400}]?[A-Z]{2})/u


i dziala !

wiem ze kody hex sa pewnie za szeroko podane ale wazne ze teraz lapie jak trzeba


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.