-
Expressão regular
Olá imperyanos.
Preciso de uma expressão regular que separe string por espaços em branco EXCETO o texto que estiver entre aspas.
Exemplo: A imperyus é "um fórum bem top" não é mesmo?
A saída deveria ser assim:
Array([0] => A, [1] => imperyus, [2] => é, [3] => "um fórum bem top", [4] =>não, [5] => é, [6] => mesmo?)
Algumas expressões regulares que encontrei em minhas pesquisas:
Identifica espaço em branco e tabulação: /[\s]+/
Identifica texto entre aspas: /\"([^\"]*)\"/
Alguém pode me dar um help nisso? *-*
-
Olá renato.
Acho que isto seria um "delimiter split", estou correto? se sim, posso lhe ajuda sim! ;-) !
-
Exatamente. Consegui chegar nisso:
$attr = preg_split('/[\s]+(?=("([^\"]*)\"))/', $line);
Infelizmente ainda está longe do que eu preciso kkkk
Em pesquisas eu encontrei isso aqui:
Código PHP:
$lines = preg_replace('/\s+(?=((\\[\\"]|[^\\"])*"(\\[\\"]|[^\\"])*")*(\\[\\"]|[^\\"])*$)/', '', $lines);
Mas essa expressão regular ai buga o browser.
-
Isto é bem simples em outras linguagens, á maneira mais fácil de "quebrar" uma string no PHP seria utilizando á função explode(); já tentou utiliza-lá ?
-
O explode não serve, porque ele não prevê "exceções". Eu preciso quebrar o texto SEM MEXER no que há entre aspas. Sacou a treta? O leitor de item eu fiz sem problemas, mas eu quero tornar o mesmo código "usável" pra ler os demais arquivos da pasta data.
E quero deixar claro que EU SEI MANIPULAR STRING. O que eu não sei é a porra da expressão regular ¬¬
-
Não consegui edito á minha resposta, enfim tente da seguinte forma:
<?php
$str = "A imperyus é "um fórum bem top" não é mesmo?";
print_r (explode(" ",$str));
?>
------
Você pode encontrar mais informações sobre ó assunto em: [Only registered and activated users can see links. Click Here To Register...]
Abraços.
-
@O que você sugeriu gera esse retorno:
Código PHP:
Array ( [0] => A [1] => imperyus [2] => é [3] => "um [4] => fórum [5] => bem [6] => top" [7] => não [8] => é [9] => mesmo? )
Eu preciso que retorne assim:
Código PHP:
Array([0] => A, [1] => imperyus, [2] => é, [3] => "um fórum bem top", [4] =>não, [5] => é, [6] => mesmo?)
Entendeu a diferença?
É por isso que eu disse que preciso de uma expressão regular pra ser usada com preg_split();
-
Renato, o problema estava na visualização das mensagens é aprovações , enfim.
Acho que já sei o que está tentando fazer,
Analisei o seu código acima é verifiquei "preg_split — Divide a string por uma expressão regular", acho que o que você precisa está aqui.
[Only registered and activated users can see links. Click Here To Register...]
Espero que lhe ajude.
-
@Jackspwn, mas faz meia hora que eu to dizendo que eu to usando preg_split() :mas:
O que eu preciso é só da expressão regular pra usar com ele :(
-
Você está tentando por em uma key do array a string que está entre aspas?
Tenho um amigo que trabalha com PHP, Irei verificar com ele.
PS: Nunca me interessei por PHP, rs.