salut. Dans mon article précédent, j'ai réussi à faire un parsing dans un fichier html. Dans ce code ci-dessous, je voulais copier le contenu de la tag`<link rel="canonical` à d'autres tags, telles que `<meta property="og:url" ` et tag `@id": "`
Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $sourcedir = "C:\Folder1\" $resultsdir = "C:\Folder1\" <# Replace canonical tag with <meta property="og:url" #> Get-ChildItem -Path $sourcedir -Filter *.html | ForEach-Object { $content = Get-Content -Path $_.FullName -Raw $replaceValue = (Select-String -InputObject $content -Pattern '(?<=<link rel="canonical" href=").+(?=" />)').Matches.Value $content = $content -replace '(?<=<meta property="og:url" content=").+(?="/>)',$replaceValue Set-Content -Path $resultsdir\$($_.name) $content $content = $content -replace '(?<="@id": ").+(?=")',$replaceValue Set-Content -Path $resultsdir\$($_.name) $content }
Le code fonctionne bien. Mais il y a un problème. Comme vous pouvez le voir dans ces 2 pages html ci-dessous (j'ai mis un lien sur celles-ci), dans la version courte, il remplace uniquement les balises que je veux, et rien d'autre ne change sur html. Super !
Mais, dans la version complète, certaines lignes sont doublées, d'autres lignes sont supprimées, etc. Le même code Powershell fait des dégâts. Pourquoi donc? J'ai besoin de changer uniquement les balises html que je veux, et de ne modifier aucune autre ligne du fichier.
Version courte:
https://pastebin.com/2BBSn830
Version complète:
https://pastebin.com/qLzSZyS8
Partager