2010-04-18 8 views
4

Je voudrais valider un champ dans un formulaire pour m'assurer qu'il contient la bonne mise en forme pour une URL reliant à une vidéo Vimeo. Ci-dessous est ce que j'ai en Javascript, mais j'ai besoin de convertir en PHP (pas mon fort)Question PHP Regex simple

Fondamentalement, je dois vérifier le champ et si elle est mal formatée, je dois stocker un message d'erreur en tant que variable .. si elle est correcte, je stocke la variable vide.

   // Parse the URL 
      var PreviewID = jQuery("#customfields-tf-1-tf").val().match(/http:\/\/(www.vimeo|vimeo)\.com(\/|\/clip:)(\d+)(.*?)/); 
      if (!PreviewID) { 
       jQuery("#cleaner").html('<div id="vvqvideopreview"><?php echo $this->js_escape(__("Unable to parse preview URL. Please make sure it's the <strong>full</strong> URL and a valid one at that.", 'vipers-video-quicktags')); ?></div>'); 
       return; 
      } 

L'URL traditionnelle vimeo ressemble à ceci: http://www.vimeo.com/10793773

Merci!

Répondre

4
if (0 === preg_match('/^http:\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $value)) 
{ 
    $error = 'Unable to parse preview URL'; 
} 

mise à jour, en réponse à votre commentaire:

if (0 === preg_match('/^http:\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $value, $match)) 
{ 
    $error = 'the error'; 
} 
else 
{ 
    $vimeoID = $match[3]; 
} 
+0

Merci pour la réponse rapide! Pouvez-vous me dire comment je déshabillerais l'entrée de l'utilisateur pour ne définir que le numéro d'identifiant vimeo en tant que variable? –

+0

merci! fonctionne très bien. –

2

Juste analyser votre _REQUEST avec $ preg_match comme.

$vimeo_array = array(); 
$vimeo_link = $_REQUEST("form_input_name"); 
if(preg_match(/http:\/\/(www.vimeo|vimeo)\.com(\/|\/clip:)(\d+)(.*?)/, $vimeo_array, $arr)) 
{ 
    $vimeo_code = $vimeo_array[3]; 
} else { 
    $error = "Not a valid link"; 
} 
+0

Merci pour la réponse rapide! Pouvez-vous me dire comment je déshabillerais l'entrée de l'utilisateur pour ne définir que le numéro d'identifiant vimeo en tant que variable? –

+0

sûr, ma réponse a été mise à jour – retro

+0

Vous pouvez utiliser l'expression régulière modifiée de la réponse de Salathe ('~^http: // (?: Www.)? Vimeo \ .com/(?: Clip:)? (\ D +) ~'), l'identifiant sera sauvegardé dans $ vimeo_array [1]. – retro

0

Pour obtenir au numéro d'identification Vimeo, vous pouvez faire quelque chose comme ce qui suit:

$link = 'http://vimeo.com/10638288'; 
if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $link, $match)) { 
    $vimeo_id = $match[1]; 
} else { 
    // Show user an error, perhaps 
} 

J'ai aussi légèrement modifié l'expression régulière, pour sauver backslash excessive des caractères d'échappement.

2

Essayez ceci pour https/http url

if (preg_match('/^(http|https):\/\/(www\.)?vimeo\.com\/(clip\:)?(\d+).*$/', $vimeo_url, $vimeo_id)){ 
    $vimeoid = $vimeo_id[4]; 
}else{ 
    // error message... 
}