|
|
|
| Есть тест:
[youtube]http://www.youtube.com/watch?v=SQ0PnOLKnY4[/youtube]
|
нужно чтобы на выходе получилось SQ0PnOLKnY4 это то, что после http://www.youtube.com/watch?v=.
и есть код
[rutube]http://rutube.ru/tracks/132143.html?v=647c292274b19dce67a756b46a9f68dc[/rutube]
|
Нужно получить 647c292274b19dce67a756b46a9f68dc, это то что после http://rutube.ru/tracks/132143.html?v=
Я попробывал так:
$txt = preg_replace('#\[youtube\]http://www.youtube.com/watch?v=(.+?)\[/youtube\]#si', '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>', $txt);
$txt = preg_replace('#\[rutube\]http://rutube.ru/tracks/132143.html?v=([^\s\'\";:\+]*?)\[/rutube\]#si', '<object width="400" height="353"><param name="movie" value="http://video.rutube.ru/\1" /><PARAM name="wmode" value="window" /><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/\1" type="application/x-shockwave-flash" wmode="window" width="400" height="353" allowFullScreen="true"/></OBJECT>', $txt);
|
Но не работает. Подскажите пожалуйста, как правильно и безопасно. | |
|
|
|
|
|
|
|
для: JIEXA
(27.08.2007 в 18:00)
| | Нужно экранировать знаки вопросов в шаблоне
\[youtube\]http://www\.youtube\.com/watch\?v=(.+?)\[/youtube\]
|
И точки. | |
|
|
|
|
|
|
|
для: kasmanaft
(27.08.2007 в 19:11)
| | Я тут немножко посидел - поизучал ренг. выр. и у меня получилось вот так:
<?
$txt = preg_replace('#\[youtube\]http://www\.youtube\.com/watch\?v=([-a-z0-9]*?)\[/youtube\]#si', '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/\1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/\1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>', $txt);
$txt = preg_replace('#\[rutube\]http://rutube\.ru/tracks/132143\.html\?v=([a-zA-Z0-9]*?)\[/rutube\]#si', '<object width="400" height="353"><param name="movie" value="http://video.rutube.ru/\1" /><PARAM name="wmode" value="window" /><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/\1" type="application/x-shockwave-flash" wmode="window" width="400" height="353" allowFullScreen="true"/></OBJECT>', $txt);
?>
|
Это правильно? Я впринципе со всем разобрался, единственное непонял зачем в ([-a-z0-9]*?) нужно ставить *?, подскажите пожалуйста | |
|
|
|
|
|
|
|
для: JIEXA
(27.08.2007 в 19:26)
| | Вопрос после * и + нужно ставить, чтобы они останавливались при первой возможности, а не при последней.
Строка: "parabellum"
Если искать /^(.*)a/
В $1 окажется "par"
А если искать /^(.*?)a/, то "p".
PS. Кстати, в вашем случае, наверное, все же, + будет более точен, чем * | |
|
|
|
|
|
|
|
для: SHAman
(27.08.2007 в 19:44)
| | Кстати,спасибо тебе :-) Многократно встречал понятие "жадности",но не понимал,а на твоем примере сразу врубился ... | |
|
|
|