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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 $regDoi = '#^10.\d{4,9}/[-._;()/:A-Z0-9]+$#i';
J'aimerais pouvoir transformer les doi en liens à peu près comme ceci

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;
Mais ça ne fonctionne pas.
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 :

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";
	}
Me renvoie "non"" alors que si j'enlève les "blabla" "ou les ""blabla" plus les espaces il me renvoie "oui".
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