Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

HTML-Attribut mit PHP auslesen und wieder setzen





Frage

Hallöchen, ich bin gerade dabei ein Videomodul für ein CMS zu erstellen. Das läuft perfekt. Man fügt im Backend einen Videocode von Youtube ein und dieser wird dann formatiert dargestellt. Soweit noch kein Problem. Problem kommt jetzt: Ich habe mir eine Checkbox erstellt, in der man auswählen kann ob das Video von automatisch startet oder nicht. Jetzt müsste ein PHP-Skript den Videocode in dieser Form hier: [code]<object width="425" height="344"> <param name="movie" value="http://www.youtube.com/v/1p6BxUWmy4c&hl=de&fs=1"></param></object>[/code] Ich müsste jetzt auf den Wert des [i]value[/i]-Attributs zugreifen können. Und an diesen eben einen zusätzlichen Parameter dranhängen. Kann man das mit der XML-Erweiterung für PHP realisieren ?? Wenn ja, wie ?? Gruß Computerfreaki

Antwort 1 von Computerfreaki

Schreibfehler:
Die Zeile über dem Codebeispiel muss folgendermaßen heißen:
Der Videocode liegt in folgender Form vor:

Antwort 2 von katy

Hallo Computerfreaki,

was für ein value? Was willst du woran hängen?
Bitte beschreibe doch erst einmal ausführlich, welche Kommunikation zwischen Server und Klient stattfinden soll und darf zu welchem Zweck.

katy

Antwort 3 von Computerfreaki

Im Backend meines CMS füge ich einen Code von Youtube in ein textarea-Feld ein. Beispiel-Code:

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/1p6BxUWmy4c&hl=de&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/1p6BxUWmy4c&hl=de&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Dann ist unter der TextArea noch eine Checkbox, in der man auswählen kann, ob da Video von automatisch startet.
Ich drücke dann auf Speichern und der Code wird mit der SeitenID usw... in die DB eingetragen.
Dieses Modul wird dann widerrum per PHP-Skript durch das CMS in die Seite eingebaut. Dieses Skript holt die Daten aus der DB und fügt um das Video noch ein DIV-Element ein, das dann mittels CSS-Klasse formatiert.
Jetzt zum wichtigsten Teil:
Der Videocode wird in einem vom CMS bereitgestellten Objekt gespeichert. Jetzt müsste man auf die URLs im Videocode zugreifen können. So wie bei JavaScript mit dem DOM. Die URL soll dann als Variable gespeichert werden. Im nächsten Schritt wird der Zeichenkette (dem Videocode) eine weitere Zeichenkette hinzugefügt. Diese lautet: &autoplay=1.
Eben je nach dem ob die Checkbox ausgewählt wurde oder nicht.

Ich hoffe diese Anleitung war ausführlich genug ;-)
P.S die anderen Skripte sind alle schon fertig. Es fehlt nur noch der mit dem Code-Zugriff.

Antwort 4 von katy

ausführlich vielleicht, aber nicht unebdingt klarer. Vorallem die Frage nach der Klient-Server-kommunikation hast du überhaupt nicht beantwortet.

Ich vermute also mal:
  • Dein CMS bastelt eine Seite zusammen, auf der ein Object-Element steht
  • und eine Checkbox
    (das war jetzt serverseitig!)
  • wenn die Checkbox betätigt wird
    (das ist jetzt klientseitig)
  • soll die Quelldatei-URI um einen Parameter ergänzt werden
    (serverseitig)

    Hier muss jetzt also Server-Kommunikation stattfinden, zB. ein einfacher Reload mit übergebener GET-Variable und deren Auswertung.

    Oder du machst das direkt über JavaScript komplett klientseitig.

    katy

  • Antwort 5 von son_quatsch

    Ich glaube du willst bei der Eingabe des YouTube-"Codes" mit einer Checkbox einstellen, wie der Code umgewandelt werden soll. Das ganze soll also einmalig bei der Eingabe geschehen, damit später immer ein Code ausgegeben wird, bei dem das Video sofort startet oder nicht - je nachdem, was man einmalig bei der Eingabe eingestellt hat.

    Dazu habe ich folgendes parat - natürlich müssen die Teile, in denen du den Wert der Checkbox oder den Youtube-Code selbst ermittelst von dir ergänzt werden:
    
    <?php
    
    	// der Wert AutoPlay, je nachdem, ob die Checkbox angehakt wurde oder nicht
    	$sAutoPlay= '1';
    
    	// der eigentliche YouTube-Link
    	$sYouTubeLink= '<object width="425" height="344">
    <param name="movie" value="http://www.youtube.com/v/1p6BxUWmy4c&hl=de&fs=1"></param></object>';
    
    	preg_match_all( '#(http://www\.youtube\.com/[^"]*)"#i', $sYouTubeLink, $aTreffer, PREG_OFFSET_CAPTURE );
    	if ( isset( $aTreffer[1][0][0] ) ) {	// Link gefunden
    
    		$aLink= preg_split( '#[?&]#i', $aTreffer[1][0][0] );	// in Einzelteile zerlegen
    
    		$bFound= false;
    		foreach ( $aLink as $key1=> $val1 ) {	// alle Teile durchlaufen
    			if ( preg_match( '#^autoplay=#i', $val1 )> 0 ) {	// "autoplay" wurde bereits angegeben, also ersetzen
    				$aLink[$key1]= 'autoplay='. $sAutoPlay;
    				$bFound= true;
    				break;
    			}
    		}
    		if ( !$bFound ) $aLink[]= 'autoplay='. $sAutoPlay;	// "autoplay" wurde noch nicht angegeben, also hinzufügen
    
    		$sYouTubeLink= substr( $sYouTubeLink, 0, $aTreffer[1][0][1] ). implode( '&', $aLink ). substr( $sYouTubeLink, $aTreffer[1][0][1]+ strlen( $aTreffer[1][0][0] ) );	// Linkteile wieder zusammenfügen und im eigentlichen Link austauschen
    
    	} else echo 'Kein Link gefunden';
    
    	// das ist nun der fertige Link, wie er in die Datenbank geschrieben werden könnte, damit dieser Code nicht bei jeder Ausgabe neu durchlaufen werden muss
    	echo $sYouTubeLink;
    
    ?>


    Antwort 6 von Computerfreaki

    Vielen Dank son_quatsch genau so habe ich mir das gedacht.
    Ich werde es morgen mal auspobieren