Revolt Posted October 28, 2007 at 07:19 PM Report Share #143598 Posted October 28, 2007 at 07:19 PM Boas. Andei aqui a magicar uma expressão regular para a parte da pesquisa num site que estou a desenvolver e deparei-me com um problema. Ao testá-la no RegexBuddy, funciona tudo às mil maravilhas e consigo capturar todas as partes que quero. O problema é que no código PHP, e com a mesma search query, ele não retorna nenhuma match. Expressão regular: ((?:\s*[^: ]+\s*)*)(??::\s*(\w*))?\s*(?::a:\s*(\d*))?\s*(?::s:\s*(\w*))?)* Exemplo de query: "Silogismos 😄 :Filosofia :a:11 :s:Anabela" Relatório do RegexBuddy: Match 1: Silogismos 😄 :Filosofia :a:11 :s:Anabela Group 1: Silogismos Group 2: Filosofia Group 3: 11 Group 4: Anabela Código PHP: if ($q == "") { $titulo = ""; } else if (preg_match('/^((?:\s*[^: ]+\s*)*)(??::\s*(\w*))?\s*(?::a:\s*(\d*))?\s*(?::s:\s*(\w*))?)*\s*/', $q, $regs)) { var_dump($regs); $titulo = trim($regs[1]); $disciplina = trim($regs[2]); $ano = trim($regs[3]); $utilizador = trim($regs[4]); } else { var_dump($q); $titulo = ""; } Revolt Website Antigo Nick: Pauzinhos Link to comment Share on other sites More sharing options...
pedrotuga Posted October 29, 2007 at 12:03 PM Report Share #143734 Posted October 29, 2007 at 12:03 PM as barras invertidas em php servem para escapar um caracter. Elas proprias precisam de ser escapadas. Experimenta colocar duas barras invertidas em todos os sitios da expressão regular onde tens um barra invertida. Link to comment Share on other sites More sharing options...
Gurzi Posted October 29, 2007 at 12:21 PM Report Share #143739 Posted October 29, 2007 at 12:21 PM as barras invertidas em php servem para escapar um caracter. Elas proprias precisam de ser escapadas. Experimenta colocar duas barras invertidas em todos os sitios da expressão regular onde tens um barra invertida. Não é isso, aquelas barras que vês indicam o ínicio e o fim da regex, não são barras Link to comment Share on other sites More sharing options...
pedrotuga Posted October 29, 2007 at 12:42 PM Report Share #143743 Posted October 29, 2007 at 12:42 PM as barras invertidas em php servem para escapar um caracter. Elas proprias precisam de ser escapadas. Experimenta colocar duas barras invertidas em todos os sitios da expressão regular onde tens um barra invertida. Não é isso, aquelas barras que vês indicam o ínicio e o fim da regex, não são barras eu estou a falar das barras invertidas que aparecem por toda a regex. Link to comment Share on other sites More sharing options...
Revolt Posted October 29, 2007 at 07:38 PM Author Report Share #143811 Posted October 29, 2007 at 07:38 PM preg_match('/^((?:\\s*[^: ]+\\s*)*)(??::\\s*(\\w*))?\\s*(?::a:\\s*(\\d*))?\\s*(?::s:\\s*(\\w*))?)*\\s*/', $q, $regs) tb n resultou :/ Revolt Website Antigo Nick: Pauzinhos Link to comment Share on other sites More sharing options...
djthyrax Posted October 29, 2007 at 07:42 PM Report Share #143812 Posted October 29, 2007 at 07:42 PM Experimenta: preg_match('/((?:\s*[^: ]+\s*)*)(??::\s*(\w*))?\s*(?::a:\s*(\d*))?\s*(?::s:\s*(\w*))?)*\s*/', $q, $regs) (ou seja, sem o ^) Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Revolt Posted October 30, 2007 at 04:24 PM Author Report Share #144007 Posted October 30, 2007 at 04:24 PM Também não :/ Não sei mesmo o que se estará a passar. Revolt Website Antigo Nick: Pauzinhos Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now