Esta es una pregunta muy recurrente, y para aquellos que tengan el deseo o la intención de implementar un buscador bíblico en su sitio, les informo que encontré la solución.
Tengo varias biblias en SQL y
Código PHP:
//Variable del URL
$quest=filter_var(($_GET['search']), FILTER_SANITIZE_STRING);
//Dividimos las referencias
$quest = preg_split('[,|;]', $quest);
print_r($quest);
// Iniciamos el blucle
foreach ($quest as $valor) {
// Separamos las referencias
$parts = preg_split('/\s*:\s*/', trim($valor));
// Preparamos el Array
$book = array('name' => "", 'chapter' => "", 'verses' => array());
// $part[0] = libro + capitulo, si isset $part[1] es versiculo
if(isset($parts[0]))
{
// 1.) Capitulo
if(preg_match('/\d+\s*$/', $parts[0], $out)) {
$book['chapter'] = rtrim($out[0]);
}
// 2.) Nombre del Libro
$x = trim(preg_replace('/\d+\s*$/', "", $parts[0]));
//Cuando no haya nombre del libro, usar nombre anterior
if (empty($x)) {
$x = $t;
$book['name'] = $x;
} else {
$book['name'] = $x;
$t = $x;
}
}
// 3.) Versiculos
if(isset($parts[1])) {
$book['verses'] = preg_split('~\s*,|-\s*~', $parts[1]);
}
//Hacemos la consulta SQL
...
El resultado es (Génesis 3:1-20; 2:3; 15; Juan 3:16, Mateo 3:20; Jueces 2:2, 3:20; 5; 1 juan 1:19):
Código PHP:
Array
(
[name] => Genesis
[chapter] => 2
[verses] => Array
(
[0] => 3
)
)
Array
(
[name] => Genesis
[chapter] => 15
[verses] => Array
(
)
)
Array
(
[name] => Juan
[chapter] => 3
[verses] => Array
(
[0] => 16
)
)
Array
(
[name] => Mateo
[chapter] => 3
[verses] => Array
(
[0] => 20
)
)
Array
(
[name] => Jueces
[chapter] => 2
[verses] => Array
(
[0] => 2
)
)
Array
(
[name] => Jueces
[chapter] => 3
[verses] => Array
(
[0] => 20
)
)
Array
(
[name] => Jueces
[chapter] => 5
[verses] => Array
(
)
)
Array
(
[name] => 1 juan
[chapter] => 1
[verses] => Array
(
[0] => 19
)
)