Comment couper expression avec des caractères génériques dans le script?

0

La question

J'ai un script qui analyse une URL. Si la requête contient l'utilisateur et le mot de passe, il va récupérer cette.

Je tiens donc à garder le PHP requête si nécessaire.


      Add-Type -AssemblyName System.Web
    
    $url = "http://toto.site:8080/user/password12349876toolong/2716?checkedby:toto.net"
    
    
    $uri = [System.Uri]$url
    $query = $uri.Query
    $IPTVhost = $uri.Host
    $IPTVport = $uri.Port
    $Segments = $uri.Segments.TrimEnd('/')
    $proto = $uri.Scheme
    
    $ParsedQueryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
    
    if(!$query) {
    
    if ($Segments[1].TrimEnd('/') -eq "live"){
    
    
    $username = $Segments[2].TrimEnd('/')
    
    $password = $Segments[3].TrimEnd('/')
    }
    else
    {
    
    $username = $Segments[1].TrimEnd('/')
    $password = $Segments[2].TrimEnd('/')
    }
    }
    
    
    else {
    $username = $ParsedQueryString['username']
    $password = $ParsedQueryString['password']
    }
    cls
    if (!($url -like '\?checkedby\:'))
    {
    echo "this is a chekedby url"
    $filter = $url.TrimEnd("\?checkedby\:toto.net")
    echo "filter : $filter"
    }
    echo "url: $url"
    echo "query: $query"
    echo "host: $IPTVhost"
    echo "port: $IPTVport"
    echo "segment: $Segments"
    echo "proto: $proto"
    echo "username: $username"
    echo "password: $password"

Je voudrais filtrer une chaîne de caractères quand je entrer une URL dans mon script (qui est souvent trouvé dans la requête mais pas toujours). Je sais qu'il commence toujours par "? Checkedby:" ou "& checkedby:" et est toujours à la fin de l'url.

Problématique: la chaîne est variable, elle peut être:

http://toto.com:8080/get.php?username=toto&password=toto&checkedby:titi.com

ou

http://toto.com/1234/4321/5678?checkedby:anyone.xyz

ou

http://toto.com/1234/4321/5678?master.m3u8&checkedby:anyelse.to

ou cette merde :

http://toto.com:8080/get.php?username=toto&password=toto&type=output.ext?checkedby:titi.com

J'ai essayé plusieurs méthodes TrimEnd mais rien n'y fait. La seule chose qui fonctionne est une expression exacte comme:

$filter = $url.TrimEnd("\?checkedby\:toto.net")

mais cela ne fonctionne pas (et c'est normal) avec une url qui se termine par:

&checkedby:another.com.

Donc, la question :

Comment faire pour supprimer tout ce qui commence par:

&checkedby:

ou

?checkedby:

Je vous remercie.

powershell
2021-11-24 02:06:37
1

La meilleure réponse

2

Bâtiment sur Santiago Squarzon 's utile commentaire:

Utiliser une regexde base de fonctionnement via l' -replace opérateur:

'http://toto.com:8080/get.php?username=toto&password=toto&checkedby:titi.com',
'http://toto.com/1234/4321/5678?checkedby:anyone.xyz',
'http://toto.com/1234/4321/5678?master.m3u8&checkedby:anyelse.to',
'http://toto.com:8080/get.php?username=toto&password=toto&type=output.ext?checkedby:titi.com' |
  ForEach-Object { $_ -replace '[?&]checkedby:.+' }

Pour une explication de l'expression régulière et la possibilité d'expérimenter avec elle, voir ce regex101.com page.

2021-11-24 03:00:59

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................