Expressões Regulares e Unicode

Publicado por em Programação [Abr 30 2011]


Quando estava desenvolvendo o Mainichi Kanji escolhi o Codeigniter como ferramenta para me auxiliar e decidi fazer tudo como manda a regra me deparei com um problema as URL amigáveis não podiam ser a leitura dos kanji ou sua tradução, e mesmo o ID deles do banco de dados não era o suficiente, isso me faria ter que adicionar todos os kanji na expressão regular que o Codeigniter usa para validar os endereços.

O problema:

Eu não poderia adicionar um a um os kanji, hiragana e katakana (os 3 alfabetos japoneses) na expressão regular, os alfabetos katakana e hiragana tem juntos cerca de 400 caracteres e os kanjis passam dos 8 mil! Mesmo considerando apenas os 1945 oficiais ainda seria trabalho demais adicionar um a um manualmente. No melhor dos casos uns 2400 caracteres.
Além disso os caracteres não funcionavam sempre corretamente se simplesmente colocados diretamente na expressão. (ex.: /[あいうえお]+/)

A solução:

Depois de muito pesquisar descobri que era possível usar os caracteres em unicode dentro de expressões em php e ainda utilizar esses caracteres para grupos com range como [a-z] em unicode [\x{0061}-\x{007A}] . Para encontrar os caracteres e ranges que eu queria bastou pesquisas um pouco, há várias fontes com a lista completa ou só explicativas como na Wikipedia.

apenas um comentário

  • Fabricio diz:

    Willian man! Tu sabe programar cara?! Não to acreditando. Deixei um recado pra tu no orkut e vc nunca responde. Preciso do seu celular. Eu aprendi a usar o Unity3D, uso o Blender para modelagem. Quero fazer um jogo usando o tema ligona. Vc fez copyright com ligona? rsaiuahiuahiauhiauiauh. Muito massa. Quero ver a possibilidade da gente trabalhar juntos nesse jogo.

Deixar uma resposta