Регулярное выражение (preg_match_all) - PullRequest
1 голос
/ 22 ноября 2011

У меня есть личный сайт, где я делюсь видео (и некоторыми другими вещами).Я достиг, что с preg_match_all() он автоматически находит ссылку и вставляет видео с HTML-кодом на мой сайт.

Вот пример:

    <?php
$matchwith = "http://videosite.com/id1 http://videosite.com/id2 http://videosite.com/id3";
preg_match_all('/videosite\.com\/(\w+)/i', $matchwith, $matches);  
foreach($matches[1] as $value)
{  
  print '<a href="http://videosite.com/'.$value.'">Hyperlink</a>';           
}      
    ?>

Это работает.Я знаю, что это можно было бы сделать проще, но так должно быть.

Но я не знаю, как это с фильмом из двух частей.Вот пример:

    $matchWith = "http://videosite.com/id1_movie1 http://videosite.com/id2_movie1"
               "http://videosite.com/id3_movie2 http://videosite.com/id4_movie2";

Все, что после http://videosite.com/(...) уникально.

Я хочу, чтобы вы написали Часть 1 и Часть 2 (или что-то еще) перед ссылкой,что он автоматически определяет его как часть 1 и часть 2 этого видео.

$ matchwith может содержать разные фильмы.

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Поэтому я считаю, что это то, что вам нужно:

<?php
$matchWith = "Movie 1 http://videosite.com/id1" . PHP_EOL .
         "Movie 1 http://videosite.com/id2" . PHP_EOL .
         "Movie 2 http://videosite.com/id3";

$arrLinks = array();
preg_match_all('%(.*)\shttp://videosite\.com/(\w+)\r{0,1}%', $matchWith, $result, PREG_SET_ORDER);
for ($matchi = 0; $matchi < count($result); $matchi++) {
    $arrLinks[$result[$matchi][1]][] = $result[$matchi][2];
}

foreach ($arrLinks as $movieName => $arrMovieIds) {
    print '<div>' . $movieName . '</div>';
    foreach ($arrMovieIds as $movieId) {
        print '<a href="http://videosite.com/'.$movieId.'">Hyperlink</a><br/>';
    }
}
?>
0 голосов
/ 22 ноября 2011
$matchwith = "Part 1 http://videosite.com/id1-1 Part2 http://videosite.com/id1-2";
preg_match_all('/videosite\.com\/(\w+-\d+)/i', $matchwith, $matches);  
foreach($matches[1] as $value)
{  
  print '<a href="http://videosite.com/'.$value.'">Hyperlink</a>';           
}   
...