2010-03-10 4 views
0

J'ai une chaîne comme ceci:regex pour analyser une chaîne de type URL en PHP

http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&

et je veux extraire le

Nnp82q3b844

partie de celui-ci à savoir la partie entre/v/et le premier &.

Y at-il et moyen facile de le faire en PHP?

+2

Lecture des règles de docs. Et obtenir une prise en main de base sur les expressions régulières n'est pas si difficile: docs de PHP: http://de.php.net/manual/en/reference.pcre.pattern.syntax.php – Boldewyn

Répondre

8

Vous n'avez pas besoin d'expressions régulières dans ce cas, vous pouvez utiliser la fonction parse_url pour effectuer le travail.

<?php 
$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_PATH); 
?> 

L'exemple ci-dessus sortie:

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
/path 
+0

@ Pentuim10: bonne fonction, je n'ai pas utilisez-le, j'ai appris quelque chose aujourd'hui grâce à vous! – RageZ

+0

+1 pour la meilleure solution. –

+1

@RageZ Merci. Regardez dans mes autres réponses, sur mon profil, qui ont été mises à jour, vous trouverez peut-être plus à apprendre. – Pentium10

2

oui, il ne devrait pas être trop dur un regard here pour vous référence ou de comprendre ma réponse

après pour l'expression régulière

quelque chose comme ça devrait le faire

preg_match('|http://www.youtube.com/v/([^&]+)&hl=en_US&fs=1&|', $url, $match); 
var_dump($match[1]); 

Le [^&]+ signifie fondamentalement plus qu'un ou un caractère qui n'est pas un '&', '[]' définissent certaines possibilités de caractères [^] le font inverser de sorte que tout caractère ne soit pas dans la parenthèse, + signifie 1 ou plus Le personnage

Mais vous avez mieux à regarder par vous-même!

Je vous conseille vraiment de bien regarder les expressions régulières car cela peut vraiment vous faire économiser des heures de travail et une fois que vous avez compris comment cela fonctionne, c'est vraiment utile!

1
$str="http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&"; 
$s = parse_url($str); 
$t = explode("/", $s["path"]); 
print preg_replace("/&.*/","",end($t));