---
title: "RegExp problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/148895-regexp-problem"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "M@rtin"
published: "2006-07-10T14:44:16.000Z"
updated: "2006-07-16T15:20:12.000Z"
replies: 4
views: 358
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/148895-regexp-problem"
---

# RegExp problem

## #1 — M@rtin, 2006-07-10T14:44Z

Jag skrev en funktion som man kunde skicka in en url till en youtube video i och få ut embed-koden för videon. Det fungerar bra men det blev en hel del kod och jag tänkte att det måste gå att göra på typ en rad med reguljära uttryck. Tyvärr är jag väldigt dålig på regexp och jag får det inte riktigt att fungera.

En url ser ut så här:
<http://www.youtube.com/watch?v=4EszplXQzeA>
men kan även ha fler querystring:
<http://www.youtube.com/watch?v=4EszplXQzeA&search=citro>

Embed koden ser ut så här:

```
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/4EszplXQzeA"></param><embed src="http://www.youtube.com/v/4EszplXQzeA" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
```

Mitt försök till funktion ser ut så här:

```
   function get_embedded_content($url){
      $embed = preg_replace('#[url]http://(www\.)?youtube.com/watch\?v=([/url][A-Za-z0-9]+)(.+?)#i','<object width="425" height="350"><param name="movie" value="$2"></param><embed src="http://www.youtube.com/v/$2" type="application/x-shockwave-flash" width="425" height="350"></embed></object>',$url);
      return $embed;
   }
```

Det fungerar ganska bra men om man har fler querystrings så får man dem kvar på slutet, jag vill att de ska försvinna, det är därför jag försökt med (.+?) i slutet men det gör ingen verkan.

Jag skulle även vilja att om man skickar in en helt annan url så får man bara en tom sträng tillbaka.

Någon som vet hur jag kan lösa detta?

Permalänk: https://www.webforum.nu/p/148895

## #2 — nitro2k01, 2006-07-10T15:18Z

Gör så här:

```php
<?PHP

   function get_embedded_content($url){
      $test = preg_match('#http://(www\.)?youtube.com/watch\?v=([A-Za-z0-9]+)#i',$url,$matches);

      if (!$test)
        return "<i>Detta är inte en videokod... ):</i>";

      echo '<object width="425" height="350"><param name="movie" value="' . $matches[2] . '"></param><embed src="http://www.youtube.com/v/' . $matches[2] . '" type="application/x-shockwave-flash" width="425" height="350"></embed></object>';
   }
// Testa
echo get_embedded_content('http://www.google.se');
echo "<br />";

echo get_embedded_content('http://www.youtube.com/watch?v=4EszplXQzeA&search=citro');
echo "<br />";

echo get_embedded_content('http://www.youtube.com/watch?v=4EszplXQzeA');
echo "<br />";

?>
```

/Edit: Pyttepluttfel korrigerat!

Permalänk: https://www.webforum.nu/p/1838306

## #3 — M@rtin, 2006-07-10T16:07Z

Ah det fungerade ju jättebra, tackar!

Fast om man har en annan querystring före v så funkar det inte, jag tänkte inte på den möjligheten innan. Finns det något enkelt sätt att lösa det?

Permalänk: https://www.webforum.nu/p/1838315

## #4 — pettsson, 2006-07-13T07:33Z

Du skulle ju kunna lägga till .\* före v, eftersom det kommer matcha alla eventuella tecken innan.

Permalänk: https://www.webforum.nu/p/1841912

## #5 — M@rtin, 2006-07-16T15:20Z

Det kan man göra ja! Tack!

Permalänk: https://www.webforum.nu/p/1842642

---

Tråden på webben: https://www.webforum.nu/amne/php/148895-regexp-problem
