Browse Source

parser le nouveau formatage de lire.la-bible.net

Maïeul Rouquette 1 year ago
parent
commit
2912260200
1 changed files with 55 additions and 3 deletions
  1. 55
    3
      traduction/lire.php

+ 55
- 3
traduction/lire.php View File

@@ -41,13 +41,65 @@ function recuperer_passage_lire($livre,$chapitre_debut,$verset_debut,$chapitre_f
41 41
 	}
42 42
 	list($chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$petit) = lire_petit_livre($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lang);
43 43
 	
44
+	$tableau_resultat = array();
44 45
 
45
-	$tableau_resulat = array();
46
-	
47 46
 	//recuperation du passage
48 47
 	include_spip("inc/distant");
49 48
 	include_spip("inc/charsets");
50
-	
49
+	include_spip("inc/querypath");
50
+	$chapitre =	intval($chapitre_debut);
51
+	$chapitre_fin = intval($chapitre_fin);
52
+	while ($chapitre <= $chapitre_fin) {
53
+		// Créer un sous tableau
54
+		$tableau_resultat[$chapitre] = array();
55
+
56
+		// recuperer les fichiers distants
57
+		$url = generer_url_passage_lire($livre,$chapitre_debut,$verset_debut,$chapitre_fin,$verset_fin,$lire,$lang);
58
+		$code = charset2unicode(importer_charset(recuperer_page($url,'utf-8')));
59
+
60
+		//// elagage pour recuperer juste zone_verset
61
+		$tableau = explode("<main", $code);
62
+		$code = "<main".$tableau[1];
63
+		$tableau = explode("</main>", $code);
64
+		$code = $tableau[0]."</main>";
65
+
66
+		$qp = htmlqp($code, '', array( 'ignore_parser_warnings'=>true,'omit_xml_declaration'=>true));
67
+		$qp->remove(".chapitre, .titre2,  .titre3,  .titre4");//suppression des intertitres:
68
+		$versets = $qp->find("li[rel=\"$lire\"]  div.zone_versets");
69
+		$versets = $versets->xml(); // le code fournit par lire.la-bible.net est tellement irrégulier que je renonce à parser directement le xml avec query_path, on va refaire d'une manière salle
70
+		$versets = explode('<span class="reference">', $versets);
71
+		unset($versets[0]);
72
+		foreach ($versets as $nb => $texte){
73
+			$tableau = explode('</span></a>', $texte);
74
+			$texte = $tableau[1];
75
+			$texte = strip_tags($texte);
76
+			$texte = preg_replace( "/\r|\n/", " ", $texte);
77
+			$texte = trim($texte);
78
+		// Insérer le texte dans le tableau, si on a demandé ce verset
79
+			if ($chapitre_debut == $chapitre_fin) { // sur un seul chapitre 
80
+				if (
81
+						($nb >= $verset_debut and $nb <= $verset_fin) // verset de fin et verset de debut
82
+						or 
83
+						($verset_debut == $verset_fin and $verset_fin == '') // pas de précision de verset > chapitre complet
84
+				) {
85
+					$tableau_resultat[$chapitre][$nb] = $texte;
86
+				}	
87
+			}	elseif ($chapitre == $chapitre_debut) { // Si plusieurs chapitres, et qu'on parse en ce moment le chapitre de début
88
+					if ($nb >= $verset_debut or $verset_debut == '') {
89
+						$tableau_resultat[$chapitre][$nb] = $texte;
90
+					}	
91
+			} elseif ($chapitre == $chapitre_fin) { // Si plusieurs chapitres, et qu'on parse en ce moment le chapitre de fin {
92
+					if ($nb <= $verset_fin or $verset_fin == '') {
93
+						$tableau_resultat[$chapitre][$nb] = $texte;
94
+					}
95
+			} else { // si plusieurs chapitres et qu'on parse en ce moment un chapitre intermédiaire
96
+					$tableau_resultat[$chapitre][$nb] = $texte;
97
+			}
98
+		}
99
+
100
+		// passer au chapitre suivant
101
+		$chapitre++;
102
+	}
51 103
 	
52 104
 	if (_NO_CACHE == 0){
53 105
 		bible_ecrire_cache($param_cache,$tableau_resultat);