Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Czy preg_replace dziala z polskimi literami ?
telemach
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.04.2007

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Andaramuxo
post
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 18.03.2009

Ostrzeżenie: (10%)
X----


Podaj kod to się zobaczy czemu nie działa.
Go to the top of the page
+Quote Post
telemach
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.04.2007

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


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

Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Polskie znaki nie zawierają się w przedziałach a-z; nie wiem jak jest z \w.
Go to the top of the page
+Quote Post
Zyx
post
Post #5





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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.
Go to the top of the page
+Quote Post
telemach
post
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.04.2007

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


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




Ten post edytował telemach 16.09.2009, 17:35:20
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
telemach
post
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.04.2007

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


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




Ten post edytował telemach 16.09.2009, 18:40:16
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: 17.09.2025 - 20:54