Найти строку между пользовательскими тегами и что-то с ней сделать - PullRequest
0 голосов
/ 19 апреля 2011

В моем новом проекте участники могут использовать мой API YouTube, и он сгенерирует тег, подобный приведенному ниже, чтобы они могли использовать его в любой области текста, которую они хотят:

<ymedia>http://www.youtube-nocookie.com/v/qQG0XfU-bFs</ymedia>

Я хочу свою страницу профиля PHPвзять строку между <ymedia></ymedia> и сгенерировать аналогичный код ниже, используя $ymstring для строки, собранной из тега ymedia:

<?php
$u_agent = $_SERVER[''HTTP_USER_AGENT''];
if(preg_match(''/Opera/i'',$u_agent)){
<object width="320" height="240" data="".$ymstring."?fs=1&amp;hl=en_US&amp;rel=0"><param name="movie" value="".$ymstring."?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=".$ymstring."?fs=1&amp;hl=en_US&amp;rel=0" /></object>
} else {
<object width="320" height="240"><param name="movie" value="".$ymstring."?fs=1&amp;hl=en_US&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="".$ymstring."?fs=1&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="240"></embed></object>
}
?>

В основном я пытаюсь найти все теги ymedia в$ string и замените их на мою кодировку youtube, нацеленную на Opera или другие браузеры.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2011

Вы хотите использовать preg_replace_callback для простоты:

$html = preg_replace_callback('#<ymedia>(http://.*?)</ymedia>#',
         "ymedia_cb", $html);

function ymedia_cb($matches) {
    $url = $matches[1];

    return "<object src=$url>";
}

Очевидно, вы бы использовали конструкцию if / else для возврата соответствующего и полного тега объекта.

0 голосов
/ 19 апреля 2011

Это должно работать:

1003 *

Тогда ваш результат будет в $Matches[1], который вы можете передать как $ymstring.

...