Wikipedia: "BildeinfügeCode" parsen?

Kalma

Erfahrenes Mitglied
Hey,

ich hab mal bei Wikipedia (Mediawiki) geguckt, wie man bei den Einträgen ein Bild einfügen kann.

[[Bild:Smile.png]] //normales Bild
[[Bild:Kornblume.jpeg|thumb|160px|Blume]] //Bild als Thumbnail (vergrößerbar), Breite und Untertitel
http://de.wikipedia.org/wiki/Hilfe:Bilder (hier mehr)

So.
Jetzt hab ich mir überlegt "cool, könntest du ja auch verwenden"

Nur stellt sich mir die Frage, wie man diese Codes ersetzt.

Könnt ihr mir wieder helfen?
 
PHP:
$pattern = "#\[\[Bild:(.*)\]\]#";
$search = "[[Bild:Smile.png]]";


echo preg_replace($pattern, "<img src='$1'>", $search);

Als schnelles Beispiel.
Allerdings sind meine regulären Ausdrücke noch sehr laienhaft, deshalb bin ich sicher, dass es da noch etwas eleganteres gibt. ;)
 
nach BBCodes hab ich schon gesucht, aber da ist das ja so:
[ img=adresse ]
Da gibts nicht viele Einstellmöglichkeiten.


@Felix:
Danke, könntest du auch sagen, wie man dann die durch | getrennten Eigenschaften dann mit einbaut? :rolleyes:

//Edit
Kann ja sein dass ich grad blöd bin, aber wie mach ich das, dass der jetzt bei deinem Code die Adresse zum Bild macht, die man angibt? :-\
 
Zuletzt bearbeitet:
Die anderen Ausdrücke hab ich absichtlich weggelassen ;)

Du müsstest zählen wieviele Parameter übergeben werden und welchen Typs die sind.
Anhand dessen dann weitere Ausdrücke ausarbeiten.

Du könntest dir doch auch Mediawiki runterladen und selber nachschauen, ist doch OpenSource Software.
 
Du müsstest zählen wieviele Parameter übergeben werden und welchen Typs die sind.
Anhand dessen dann weitere Ausdrücke ausarbeiten.

Ja, Ausdrücke zählen ist kein Problem.
Aber Typ bestimmen wird doch dann kompliziert oder? :rolleyes:


//Edit
so habs jetzt erstmal mit Fett und Kursiv versucht:
PHP:
			# Formatierung ersetzen #
			$search[] 	= "'''";	# Dicker Text #
			$search[]	= "'''";
			$search[]	= "''";		# Kursiver Text #
			$search[]	= "''";
	
			$replace[] 	= '<strong>';
			$replace[]	= '</strong>';
			$replace[]	= '<em>';
			$replace[]	= '</em>';

	
			$data 		= str_replace($search, $replace, $text);
Wie hier in der Bearbeitungshilfe
Also, er öffnet den "strong" Tag mit 3 ' Strichen und sollte diesen auch mit 3 ' Strichen schließen.
Aber das klappt irgendwie nicht, das Schließen

MfG
David
 
Zuletzt bearbeitet:
Dass er die Tags nicht mehr schließt liegt daran, dass er sie ja vorher schon durch einen anderen String ersetzt hat, z.B.:

Code:
'''Hallo'''
Dann ersetzt er sowohl das vordere als auch das Hintere durch <strong>, da er einfach alles was ''' ist durch <strong> ersetzt, und da keinen Unterschied macht. Ich hoffe du verstehst was ich meine. :rolleyes:

Edit:
So könnte es funktionieren (nicht getestet):
Code:
$Search[] = "\'\'\'(.*)\'\'\'";

$Replace[] = "<strong>'$1'</strong>";

LG
pHyro
 
Zuletzt bearbeitet:
Hey,

//Edit
Ah, jetzt gehts :)


also, ich bin wohl total neben der Spur

PHP:
<?php
$text = "'''Hallo''', wie gehts?";

$Search[] = "\'\'\'(.*)\'\'\'";

$Replace[] = "<strong>'$1'</strong>";
$data         = preg_replace($Search, $Replace, $text); 
echo $data;
?>

Diei Fehlermeldung
Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /home/www/web245/html/data/index.php on line 7 '''Hallo''', wie gehts?

Warum geht dat nich? :rolleyes:
 
Zuletzt bearbeitet:
Hey,

//Edit
Ah, jetzt gehts :)


also, ich bin wohl total neben der Spur

PHP:
<?php
$text = "'''Hallo''', wie gehts?";

$Search[] = "\'\'\'(.*)\'\'\'";

$Replace[] = "<strong>'$1'</strong>";
$data         = preg_replace($Search, $Replace, $text); 
echo $data;
?>

Diei Fehlermeldung


Warum geht dat nich? :rolleyes:

Sorry hatte die Begrenzungszeichen vergessen :-(

Code:
<?php
$text = "'''Hallo''', wie gehts?";

$Search[] = "/\'\'\'(.*)\'\'\'/";

$Replace[] = "<strong>$1</strong>";
$data         = preg_replace($Search, $Replace, $text); 
echo $data;
?>

So funktioniert es nun bei mir:

Hallo, wie gehts?

LG pHyro
 
Zuletzt bearbeitet:
Sou,


jetzt hab ich fett, kursiv, überschrift 1 und Überschrift 2.



Dann kann ich mich ja jetzt den Listen widmen.
Wenn man eingibt
* 1. punkt
* 2. punkt

Dann soll ne nicht nummerierte Liste rauskommen.
Bei # davor eine nummerierte.

Das ist generell kein Problem aber diesmal ist der Anfang das Problem. Klar * und # machen einen <li> Tag.
Aber wie das Ul/Ol Element einleiten? :mad:
 
Zurück