2017-10-17 2 views
-1

Je dois capturer un identifiant qui fait partie d'une URL se trouvant dans une balise iframe. Je sais que cela peut être fait avec regex mais je ne suis pas très bon, je fait quelques tentatives mais n'a pas pu obtenir un résultat, iframe serait ce (ID peut varier):Sélectionner une partie de l'URL à l'intérieur d'une balise iframe

<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe> 

Et la ID Je voudrais obtenir serait ceci:

ph57d6z9fa1349b 
+0

Est-ce surpuissant? [https://3v4l.org/v01sD](https://3v4l.org/v01sD). xD – FirstOne

Répondre

1

Vous pouvez diviser la chaîne avec l'expression rationnelle.

$re = '/\<iframe[^\>]+src\="(.+?)\/([A-Za-z0-9]+)"/'; 
$str = '<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe>'; 

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); 

// Print the entire match result 
var_dump($matches); 

Si vous voulez la liste des codes d'identification (comme 'ph57d6z9fa1349b'), vous pouvez le faire:

<?php 
$re = '/\<iframe[^\>]+src\="(.+?)\/([A-Za-z0-9]+)"/'; 
$str = '<iframe src="https://www.example.com/embed/ph57d6z9fa1349b" frameborder="0" height="481" width="608" scrolling="no"></iframe>'; 

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); 

foreach ($matches as $match) { 
    $id = $match[2]; // The required id code 
    echo $id;   // Echo it 
} 
?> 
0

cette regex correspond à l'attribut source et de mettre votre identifiant desided dans le groupe 1.
src=".+\/(.+?)"

  • La première partie src=" correspond au début de l'attribut
  • .+\/ correspond au corps URL jusqu'à la dernière barre oblique (gourmande)
  • (.+?)" correspondant à votre identifiant (paresseux) et le guillemet qui ferme l'attribut