Question

je veux analyser un fichier de modèle et trouver un ensemble spécifique de variables qui ressemblent à ce que:

<!-- [LOOP-VARIABLENAME] -->

Je veux juste obtenir le variablename et la position de départ du match. premier i utilisé strpos (), mais ceci est fonction ne peut pas prendre un argument regex.

Array (
  [0] => 1678 // strpos
  [1] => <!-- [LOOP-VARIABLENAME] --> // full match
  [name] => VARIABLENAME
)

est-ce possible? J'ai essayé d'utiliser cette expression rationnelle:

preg_match_all('/<!-- [LOOP-(?P<year>\W+)/', $html, $matches, PREG_OFFSET_CAPTURE);

mais aucun résultat positif.

Merci pour votre aide.

Était-ce utile?

La solution

<?php

$html = "jg<!-- [LOOP-VARIABLENAME] -->sdfsdfsdf<!-- [LOOP-TESTNAME] -->sfdsdffsd";

preg_match_all('/<!-- \[LOOP-(\w+)]\ -->/', $html, $matches, PREG_OFFSET_CAPTURE);

echo '<pre>' . print_r($matches, true) . '</pre>';

?>

Ce code donne une sortie comme ceci:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 
                    [1] => 2 //position where matching <!-- starts, 1st var
                )

            [1] => Array
                (
                    [0] => 
                    [1] => 39  //position where matching <!-- starts, 2nd var
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => VARIABLENAME
                    [1] => 13  //position where VARIABLENAME starts
                )

            [1] => Array
                (
                    [0] => TESTNAME
                    [1] => 50 //position where TESTNAME starts
                )

        )

)

Si ce tableau ne semble pas tout à fait la façon dont vous le souhaitez, je peux écrire un peu plus de code pour le transformer.

Autres conseils

On dirait que vous n'êtes pas échapper à vos caractères spéciaux .. par exemple,

[LOOP

doit être

\[LOOP

dans votre modèle regex.

Merci pour votre réponse, mais a essayé ceci déjà

preg_match_all('/<!-- \[LOOP-(?P<name>\W+)/', "<!-- [LOOP-VARIABLENAME] -->", $matches, PREG_OFFSET_CAPTURE);

print_r ($ matches);

les regards de sortie comme ceci:

Array ( [0] => Array ( ) [name] => Array ( ) [1] => Array ( ) ) Array ( [0] => Array ( ) [name] => Array ( ) [1] => Array ( ) )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top