Bonjour à tous,
concrètement j'ai une liste de publications au format HTML. Dans cette liste il y a des DOI affichés comme dans ce modèle:
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <li>Auteur 1, Auteur 2, Auteur 3. <strong>Année</strong>. Titre de l article. Journal. Volume. PageDébut-pageFin. DOI : 10.1016/journal.année.autresInformations </li>
Un masque possible de DOI est celui ci :
J'aimerais pouvoir transformer les doi en liens à peu près comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part $regDoi = '#^10.\d{4,9}/[-._;()/:A-Z0-9]+$#i';
Mais ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $texte = "<li>Auteur 1, Auteur 2, Auteur 3. <strong>Année</strong>. Titre de l'article. Journal. Volume. PageDébut-pageFin. DOI : 10.1016/journal.année.autresInformations </li>" $publis_liens =preg_replace($regDoi, '<a href="https://doi.org/$0/">$0</a>', $texte); echo $publis_liens;
Conscient de ne pas bien maîtriser la mécanique des regex et des fonctions associées, j'ai parcouru les tutoriels à ce sujet mais sans trouver de solution à mon problème.
D'ailleurs je ne comprends pas non plus pourquoi ce script :
Me renvoie "non"" alors que si j'enlève les "blabla" "ou les ""blabla" plus les espaces il me renvoie "oui".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $texte='blabla 0456231245 blabla'; $regNum='#^0[1-68][0-9]{8}$#'; if(preg_match($reg4, $texte)) { echo "Oui "; } else { echo "Non"; }
Est-ce qu'il y a un problème avec les espaces ?
Est-ce que, en gros, il faut que je stocke chaque chaîne de caractère séparée par un espace dans un tableau, que je parcours ce tableau, remplace les occurrences correspondant à mon masque et qu'une fois fini je réaffiche chaque entrée du tableau pour retrouver ma liste de publis modifiées et contenant donc maintenant les liens ?
Merci d'avance pour votre aide,
David
Partager