Je cherche un moyen d'analyser une sous-chaîne en utilisant PHP, et j'ai rencontré preg_match mais je n'arrive pas à trouver la règle dont j'ai besoin.
J'analyse une page Web et j'ai besoin de saisir une valeur numérique dans la chaîne, la chaîne est comme ceci
producturl.php?id=736375493?=tm
J'ai besoin de pouvoir obtenir cette partie de la chaîne:
736375493
Merci Aaron
$matches = array();
preg_match('/id=([0-9]+)\?/', $url, $matches);
Ceci est sûr si le format change. La réponse de slandau ne fonctionnera pas si vous avez déjà d'autres numéros dans l'URL.
<?php
$string = "producturl.php?id=736375493?=tm";
preg_match('~id=(\d+)~', $string, $m );
var_dump($m[1]); // $m[1] is your string
?>
$string = "producturl.php?id=736375493?=tm";
$number = preg_replace("/[^0-9]/", '', $string);
Malheureusement, vous avez une chaîne de requête d'URL mal formée, donc une technique d'expression régulière est la plus appropriée. Voir ce que je veux dire .
Aucun groupe de capture n'est nécessaire. Faites simplement correspondre id=
puis oubliez ces caractères avec \K
, puis isolez le ou les caractères numériques suivants.
Code ( Démo )
$str = 'producturl.php?id=736375493?=tm';
echo preg_match('~id=\K\d+~', $str, $out) ? $out[0] : 'no match';
Sortie:
736375493