Encontre una manera simple de hacerlo:
Código PHP:
//obtenemos variable
$quest=filter_var(($_GET['search']), FILTER_SANITIZE_STRING);
// dividimos capitulos y versiculos
$partes = preg_split('/\s*:\s*/', trim($quest, " ;"));
// iniciamos el array libro
$libro = array('nombre' => "", 'capitulo' => "", 'versiculo' => array());
// $partes[0] = libro + capitulo, si isset $partes[1] es versiculo
if(isset($partes[0])) {
// 1.) capitulo
if(preg_match('/\d+\s*$/', $partes[0], $out)) {
$libro['capitulo'] = rtrim($out[0]);
}
// 2.) libro
$libro['nombre'] = trim(preg_replace('/\d+\s*$/', "", $partes[0]));
}
// 3.) versiculo
if(isset($partes[1])) {
$libro['versiculo'] = preg_split('~\s*,\s*~', $partes[1]);
}
El resultado es (Genesis 3:1-20):
Código PHP:
Array
(
[nombre] => Genesis
[capitulo] => 3
[versiculos] => Array
(
[0] => 1-20
)
)
Pero no funciona con la búsqueda compleja (Génesis 3:1-20; 2:3; 15; Juan 3:16, Mateo 3:20; Jueces 2:2, 3:20; 5; 1 juan 1:19), ¿Alguien me puede ayudar con eso?