Nur bestimmte werte aus Feld auslesen

wenn ich jetzt zum beispiel bei nem Forum einen post auslesen lasse, wie kann ich den überprüfen ob bestimmte zeichenfolgen darin vorkommen und wenn diese vorkommen, die zeichen die danach kommen auf eine variable speichern?

also jetzt z.B. jemand postet nen youtube link, der eintrag in der datenbank wird überprüft ob http://www.youtube.com/watch?v= darin vorkommt und wenn es so ist, liest es die zeichen hinter “watch?v=” aus und speichert sie auf $videocode oder sowas und das kann dann verwendet werden um das video als embed im Forum zu konvertieren

Hmm… preg_replace()?

das problem ist dass die youtubelinks auf den code enden.
das heißt ich könnte mit preg_replace() die adresse vor dem videocode ersetzen lassen durch den anfang vom embed… aber wie krieg ich das ende davon raus? lässt sich das auch mit preg_replace machen weil man müsste doch entweder herausfinden wann nach dem suchmuster das nächste leerzeichen ist (link zuende) und da das ende vom embed anfügen oder man müsste irgendwie nur die Zeichen zwischen dem suchmuster und dem nächsten leerzeichen auslesen um an den videocode zu kommen.

Moin,

soviel ich von YouTube mitkriege haben die einzelnen Codes für die Videos immer eine bestimmte Länge (geschätzt wären es 10-11 Zeichen), d.h. du solltest mal die Zeichen zählen und wenn dem so ist deine Auswahl darauf beschränken.

MfG
myPages

Es sind immer 11 Zeichen, um die zu bekommen:

$youtubestr = 'http://de.youtube.com/watch?v=abcdefghijk';
$videostr = substr(strlen($youtubestr)-11);

das war mist, was du da gepostet hast :p

$videostr = substr($youtubestr,-11);

aber ich würde es ja so machen:

$videostr = preg_replace("!youtube\.com/watch\?v\=(.{11})!i", "$1", $youtubestr);

kannst du das mal testen? ich geh essen :smiley:

Warum war das Mist?
Die substr() Funktion gibt alle Zeichen ab der angegebenen Zeichenposition zurück, und die ist die Gesamtlänge des Strings minus der 11 Zeichen, die man haben will.

ich zähle da ein Argument, und das ist ein Integer (nämlich [u][i]strlen($youtubestr)-11[/i][/u])

ich zähle da ein Argument, und das ist ein Integer (nämlich strlen($youtubestr)-11)

:unamused: ja, da hab ich wohl was vegessen…
So müsste es heißen:

$youtubestr = 'http://de.youtube.com/watch?v=abcdefghijk'; $videostr = substr($youtubestr,strlen($youtubestr)-11);

ja, aber man kann direkt -11 übergeben…substr macht das automatisch :wink:
aber meinen Code hab ich ja gepostet :wink:

thx thx :slight_smile:
funzt jetzt soweit (hab michis version genommen)

[code]$convmessage = preg_replace("!@http://youtube.com/watch?v=(.{11})!i",
" <embed src=„http://www.youtube.com/v/$1&hl=en&rel=0

type=„application/x-shockwave-flash“ wmode=„transparent“ width=„800“

height=„600“>", $message);
[/code]

hab nochn @ davor gesetzt zum einen damit man noch kontrollieren kann dass das video auch als link gepostet werden kann wenn embding nicht für freigeschalten ist und zum anderen damit der Forum BB-code nicht automatisch die adresse noch verlinken will.

werd noch versuchen das in den ForumBBcode mit einzubaun damit ich html für die öffentlichkeit sperren kann (wurde eig. eh großteils für die youtube boxen verwendet aber da kann man zu viel mit mit baun)

weiß zwar nicht ob und wie das ohne weiteres möglich ist aber werd mich morgen äh heute mal ransetzen wenn nicht komm ich hier nochmal drauf zurück.
thx nochmal und gn8 :morgen:

hm komme so auch nicht weiter ^^
die ganzen bbcode sachen sind in einer datenbank tabelle festgelegt.

ich kriegs jetzt aber nicht wirklich hin da in ein feld php einzugeben.
weiß auch nicht ob das überhaupt geht oder was ich falsch mache oder ob ich an der falschen stelle suche.

edit: hat sich erledigt