Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match i japońskie znaki
Forum PHP.pl > Forum > Przedszkole
EdeusEx
Witam.

Mam do obsługi znaki alfanumeryczne, japońskie (hiragana, katakana, kanji) oraz znaki specjalne (spacja, przecinek, małpa, procent, dolar itp).

Próbowałem zrobić coś takiego (z PHP.net):

  1. $pattern ='/^[-a-zA-Z0-9_ \\\!\@\#\$\%\^\&\*\(\)\=\|\+\;\:\'\"\,\.\/\<\>\?\-\x{30A0}-\x{30FF}'
  2. .'\x{3040}-\x{309F}\x{4E00}-\x{9FBF}\s]*$/u';
  3. $match_string = 'カタカナ ひらがな 漢字 alfabet 09123 !-@#$,.;';
  4.  
  5. if (preg_match($pattern, $match_string)) {
  6. echo "Found - pattern $pattern";
  7. } else {
  8. echo "Not found - pattern $pattern";
  9. }


Ale brakuje jeszcze kodowania innych znaków związanych z japońskim ( (większa spacja)、。’、”「」()).
Czy zna ktoś zakres kodowania na te znaki ?
Crozin
1. Zadbaj o czytelność swojego kodu.
2. Podane przez Ciebie znaki są w bloku CJK Symbols and Punctuation
Kod
$specialChars = preg_quote('!@#$%^&*()/*-+=[]{};:\'",.<>?', '/');

$pattern = '/
    ^[
        \w\s                  # a-Z0-9_, whitespaces
        ' . $specialCahrs . ' # special characters
        \x30A0-\x3oFF         # Japanese hiragana
        \x3040-\x309F         # Japanese katakana
        \x4E00-\x9FBF         # Japanese kanji
        \x3000-\x303F         # CJK Symbols and Punctuation
    ]*$
/xu';
EdeusEx
Przedział jest chyba za duży.

Cytat
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 82


Ale chyba nie za bardzo da się to jakoś robić.

Ja nie mam pomysłu ...
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.