Voilà
Je souhaite :
Lignes par lignes.
Sélectionner toutes les balises html, avec leurs attributs éventuels ( pas besoin de faire celà en une seule fois ),
sélectionner aussi les codes php dans le html, ainsi que les scripts et noscripts.
Ceci en une seule regex php.
Le code suivant me sélectionne les <?php , ?>, <script.*> </script>, <noscript.*> et </noscript> , rien d'autre.
Le problème vient probablement des deux regex ( première et troisième ) ci-dessous, qui sont censée sélectionner tous caractères sauf les <?php, ?>, <script etc...
J'ai essayé (.*) à leurs places, mais la sélection déborde et après <?php , ?> ... le reste de la ligne est en trop.
Il faut sélectionner : tout sauf un \? suivi de >, et tout sauf un < , suivi de \?(php)? ou de (no)?script.*>, ou de /(no)?script>.
C'est à-dire, plusieurs negative lookahead alternatifs.
Le nombre d'occurrences doit être : de zéro à infini.
Faut-il faire aussi des negative lookbehind pour éviter les caractères non désirés ?
Merci beaucoup de votre aide.
Je souhaite :
Lignes par lignes.
Sélectionner toutes les balises html, avec leurs attributs éventuels ( pas besoin de faire celà en une seule fois ),
sélectionner aussi les codes php dans le html, ainsi que les scripts et noscripts.
Ceci en une seule regex php.
Le code suivant me sélectionne les <?php , ?>, <script.*> </script>, <noscript.*> et </noscript> , rien d'autre.
Le problème vient probablement des deux regex ( première et troisième ) ci-dessous, qui sont censée sélectionner tous caractères sauf les <?php, ?>, <script etc...
J'ai essayé (.*) à leurs places, mais la sélection déborde et après <?php , ?> ... le reste de la ligne est en trop.
Il faut sélectionner : tout sauf un \? suivi de >, et tout sauf un < , suivi de \?(php)? ou de (no)?script.*>, ou de /(no)?script>.
C'est à-dire, plusieurs negative lookahead alternatifs.
Le nombre d'occurrences doit être : de zéro à infini.
Faut-il faire aussi des negative lookbehind pour éviter les caractères non désirés ?
Merci beaucoup de votre aide.
PHP:
if(preg_match("{
((?:(?:<(?!(?:no)?script.*>))|(?:<(?!\/(?:no)?script>))|(?:<(?!\?(php)?))|(\?(?!>)))*?) // negative lookahead
((?:<(?:no)?script.*>|<\/(?:no)?script>|<\?(php)?|\?>)?) // sélection code et scripts
((?:(?:<(?!(?:no)?script.*>))|(?:<(?!\/(?:no)?script>))|(?:<(?!\?(php)?))|(\?(?!>)))*?) // negative lookahead
}", $fdata, $output)) {