Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

andreb

Regex, separar por virgulas

Mensagens Recomendadas

andreb

Boas, estou com um problema de regex entre mãos  à cerca de 1 hora, tenho a seguinte string

1,2,1275258965,</>Hello, how are you<\>

e queria fazer um split de virgulas que não separa-se o "Hello" do "how are you" depois tenho as seguinte expressão que identifica o </>Hello, how, are you<\>:

(</>.*<\\>)

e a expressão  [^,]*  que identifica todos os caracteres que nao são ",", mas queria que ele fizesse split e eu ficasse com uma array com:

1

2

1275258965

</>Hello, how are you<\>

se alguém pude-se ajudar agradecia.

Cumprimentos Andreb.

PS:Desculpem a desarrumação do post xD

EDIT: Desculpem encontrei a resolução. O problema é que eu não sei funcionar muito bem com regex, e agora com mais algumas tentativas finalmente consegui os matches usando  ((</>).*?(<\\>))|[^,]*  , e assim posso usar a função preg_match_all obrigado e desculpem ter feito o post e postar de seguida a resolução.

*****EDIT 2: Afinal não funciona bem, os resultados vêm todos mal.. alguem me pode sugerir uma resolução*****


...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andreb

Pois, mas não tenho padrão, podem existir ficheiros como:

1,2,13,</>MESSAGE<\>

1,2,</>MESSAGE<\>,</>MESSAGE<\>,123123

</>MESSAGE<\>,2,3,</>MESSAGE<\>

tive a procurar pela net, e encontrei alguns que faziam isto.. mas o preg do PHP não aceita infinitas repetições dentro dos lookbehind

o melhor será eu fazer um parser?


...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Parece-me que existe um padrão, ou o conteúdo é separado por vírgulas ou contém aquelas duas tags.


$list = explode(',', $data);

foreach ($list as $s)
{
  // aqui verificas se dentro do conteúdo existe uma tag daquelas a abrir e se não tem nenhuma a fechar, se isso acontecer na próxima volta procuras se já tem a tag de fecho e colas resultados, e assim sucessivamente
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
andreb

Sim realmente tem esse padrão, as tags servem para delimitar o texto, que pode conter virgulas. Vou tentar isso e já posto um edit.


...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.