Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Que dia gloriosamente macabro para se encontrar um bug sinistro, não?
Pior, achei que me livraria dele <_<
Se eu entendi direito, a explicação está no item 3 dessa seção do manual, mas infelizmente não poss ter certeza pois na minha instalação, ereg() sequer roda.
Obviamente, não é a informação REAL, apenas um à parte para que eu possa trabalhar mais rapidamente na solução:
$ERs = array( '/',
'main\b(.*?)',
'translate\b(.*?)',
'manager/actresses\b(.*?)',
'manager/actresses/view\b(.*?)',
'manager/actresses/add\b(.*?)',
'manager/actresses/add/another/value/to/test/the/longest/match\b(.*?)' );
$input = 'manager/actresses/add/option/value';
foreach( $ERs as $ER ) {
if( preg_match( sprintf( '@^%s@D', $ER ), $input ) ) {
var_dump( $input, $ER ); break;
}
}
Existe a matriz com algumas Expressões Regulares e existe um dado valor fixo.
As ER's são construídas por uma parte fixa (strings) e uma variável (grupo quantificador)
Rodando esse código, eu gostaria que preg_match() casasse todo o texto "visível" antes de operar sobre os metacaracteres. Mas ele está parando logo no primeiro resultado positivo, que é o esperado pela função:
...but PCRE stops on the first valid match
No exemplo, mesmo que a string passada posua adicionalmente /add, a verificação está parando no manager/actresses :pinch:
Como que eu faria esse casamento?
P.S.: Não poderiam ser listados todos os casamentos para se obter o maior deles pois como uso real será em uma função, de retorno condicionado ao casamento em si, dessa forma, haveria perdade perfomance proporcional ao número de Expressões.
Carregando comentários...