Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Expressions regulieres

3 réponses
Avatar
Bruno
Bonjour,
Je n'y connais pas grand chose en expressions régulières.
J'aurais besoin d'aide :
Je voudrais dans un fichier texte :
trouver toutes les chaines de cette forme "page.php?PagNum=XX".
Récupérer "XX" pour le comparer (in_array ("XX" ,$PAGE_EXISTE).
Et remplacer les chaines "page.php?PagNum=XX" en "pXX.html" (avec "XX"
un numérique de 1 à 3 chiffres).

Merci pour votre aide.

PS. Je suis à la recherche, aussi, d'une documentation avec des exemples
de syntaxe des expressions régulières.

-------
Bruno
-------

3 réponses

Avatar
marc.quinton-PAS-DE-
Bruno wrote:

Je voudrais dans un fichier texte :
trouver toutes les chaines de cette forme "page.php?PagNum=XX".
Récupérer "XX" pour le comparer (in_array ("XX" ,$PAGE_EXISTE).
Et remplacer les chaines "page.php?PagNum=XX" en "pXX.html" (avec "XX"
un numérique de 1 à 3 chiffres).

Merci pour votre aide.

PS. Je suis à la recherche, aussi, d'une documentation avec des exemples
de syntaxe des expressions régulières.



c'est une bonne idée pour réaliser un cache. La doc de preg_match()
est disponible sur le site; tu regardes, tu procedes a des essais
et tu reviens nous voir avec ton petit bout de code si ca ne fonctionne
pas.

l'autre idée pour gerer un cache a ta facon est celle-ci. C'est
sans doute plus performant puisque basé sur la configuration apache.

soit une page numérotée XX, pour y acceder, je génére les liens qui
vont bien dans mon site de cette facon (ce que tu comptes faire, a
peu de chose pres) :

lien : http://.../pageXX.html

1/ si la page existe, elle est directement envoyée a l'utilisateur
sans passer par php.

2/ en cas d'erreur, il est possible de recuperer via un script php,
le contexte de l'erreur. Cela doit etre configuré dans apache. Et
en faisant un phpinfo(), il est possible de voir sur quelle variable
du serveur il faut pointer pour voir quelle page il faut servir ...

la doc php, c'est http://www.php.net/, certains vont chez nexen.
il y en a bien d'autres.

Avatar
shak
"Bruno" a écrit dans le message de news:
Bonjour,
Salut


Je voudrais dans un fichier texte :
trouver toutes les chaines de cette forme "page.php?PagNum=XX".
Récupérer "XX" pour le comparer (in_array ("XX" ,$PAGE_EXISTE).
Et remplacer les chaines "page.php?PagNum=XX" en "pXX.html" (avec "XX"
un numérique de 1 à 3 chiffres).
J'utilise aussi cette méthode pour éviter de donner le nom exact du

fichier, mais il n'y a pas besoin d'expression régulière pour ça !
En plus, avec ta méthode, tu es obligé de stocker un tableau contenant le
nom des fichiers existant... :/

Voici ce que j'utilise :
<?
if( isset($_GET['PagNum']) ){
if( file_exists('sous_rep/p'.$_GET['PagNum'].'.html') ){
//faire les opérations que tu veux. Pour moi c'est un include
include( 'sous_rep/p'.$_GET['PagNum'].'.html' );
}
else { //le fichier existe pas... affichage d'un message d'erreur
include('404.html');
}
} else { //la variable PagNum n'est pas définie, affichage de l'index ou
autre...
include('index.html');
}
?>

Voila. En plus, tu peux remarquer, que les fichiers sont stockés dans un
sous-répertoire. C'est plus difficile a atteindre de cette facon. Pour
encore plus de sécurité, tu peux appliquer une restriction d'accès sur le
dossier avec un .htaccess (si t'es sur apache mais il y a le pendant sur
IIS).

J'espère que c'est bien ce que tu voulais faire et que je suis pas parti
dans mes délires pour rien... ;)

A+

Shak.

Avatar
Antoun
trouver toutes les chaines de cette forme "page.php?PagNum=XX".


$match = '' ;
preg_match_all('/page.php?PagNum=(d{1,3})/i', $texte, $match) ;

tous tes XX sont dans $match[1]

NB : le i à la fin de la regex suppose que tu veux une recherche
insensible à la casse... l'enlever sinon

Récupérer "XX" pour le comparer (in_array ("XX" ,$PAGE_EXISTE).
Et remplacer les chaines "page.php?PagNum=XX" en "pXX.html" (avec "XX"
un numérique de 1 à 3 chiffres).


$texte = preg_replace('/page.php?PagNum=(d{1,3})/i', "p$1.html",
$texte)

PS. Je suis à la recherche, aussi, d'une documentation avec des exemples
de syntaxe des expressions régulières.


cf. pour commencer la doc PHP sur les "expressions régulières
compatibles Perl"...

sinon, le must est le O'Reilly de Friedl, "Maîtrise des expressions
régulières", dans toutes les bonnes librairies ;-)