macht preg match unterschiede in Argumentanzahl?

Kalma

Erfahrenes Mitglied
Hallo,

ich habe ein Doofes Problem.
Ich habe folgenden code:
PHP:
		//Hyperlink
		$search[] = "#\[\[(.*?)\|(.*?)\|_(.*?)\]\]#"; 											//Link: Adresse, Alternativ Text, Target
		$search[] = "#\[\[(.*?)\|(.*?)\]\]#"; 													//Link: Adresse, Alternativ Text
		$search[] = "#\[\[(.*?)\|_(.*?)\]\]#"; 													//Link: Adresse, Target
		$search[] = "#\[\[(.*?)\]\]#"; 															//Link: Adresse

		//Hyperlink
		$replace[] = '<a href="$1" target="$3">$2</a>';
		$replace[] = '<a href="$1" target="_blank">$2</a>';
		$replace[] = '<a href="$1" target="$2">$1</a>';
		$replace[] = '<a href="$1" target="_blank">$1</a>';

Und folgende Eingabemöglichkeiten:
[[http://tutorials.de|Tutorials|_self]] //Link, Alt, Target
[[http://tutorials.de|Tutorials]] //Link, Alt
[[http://tutorials.de|_self]] //Link, Target
[[http://tutorials.de]] //Link

Jetzt kommt das Problem, in der Datenbank steht:

Code:
Ein 2. Link (addr, alt): [[http://www.dfmusik.de|Link]]

Ein 1. Link (Nur Adresse): [[http://www.dfmusik.de]]
Das geht.

Wenn ich jetzt jedoch die beiden Zeilen umdrehe, steht in der Ausgabe:
Ein 1. Link (Nur Adresse): Link
(Kein Link)



Woran liegt das? :(
 
Mein Skript:
PHP:
<?php
$string = "Ein 2. Link (addr, alt): [[http://www.dfmusik.de|Link]]

Ein 1. Link (Nur Adresse): [[http://www.dfmusik.de]]";

//Hyperlink
$search[] = "#\[\[(.*?)\|(.*?)\|_(.*?)\]\]#";                                             
$search[] = "#\[\[(.*?)\|(.*?)\]\]#";                                                   
$search[] = "#\[\[(.*?)\|_(.*?)\]\]#";                                                    
$search[] = "#\[\[(.*?)\]\]#";                                                            

//Hyperlink
$replace[] = '<a href="$1" target="$3">$2</a>';
$replace[] = '<a href="$1" target="_blank">$2</a>';
$replace[] = '<a href="$1" target="$2">$1</a>';
$replace[] = '<a href="$1" target="_blank">$1</a>'; 

echo preg_replace($search, $replace, $string);
?>

Meine Ausgabe:
HTML:
Ein 2. Link (addr, alt): <a href="http://www.dfmusik.de" target="_blank">Link</a>

Ein 1. Link (Nur Adresse): <a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>

Funktioniert also bei mir lokal wunderbar.
 
Ja, bei mir auch, nur was passiert wenn du diese beiden Zeilen umdrehst?

PHP:
$string = "Ein 2. Link (addr, alt): [[http://www.dfmusik.de|Link]]

Ein 1. Link (Nur Adresse): [[http://www.dfmusik.de]]"

zu

PHP:
$string = "Ein 1. Link (Nur Adresse): [[http://www.dfmusik.de]]

Ein 2. Link (addr, alt): [[http://www.dfmusik.de|Link]]"
 
Dann sieht es so aus:

HTML:
Ein 1. Link (Nur Adresse): <a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>

Ein 2. Link (addr, alt): <a href="http://www.dfmusik.de" target="_blank">Link</a>

Also auch umgedreht.
 
und wie sieht es hiermit aus?

Code:
[[http://www.dfmusik.de]]
[[http://www.dfmusik.de|Dfmusik]]
[[http://www.dfmusik.de|Dfmusik|_self]]

[[http://www.dfmusik.de|Dfmusik|_self]]
[[http://www.dfmusik.de|Dfmusik]]
[[http://www.dfmusik.de]]
 
HTML:
<a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>
<a href="http://www.dfmusik.de" target="_blank">Dfmusik</a>
<a href="http://www.dfmusik.de" target="self">Dfmusik</a>

<a href="http://www.dfmusik.de" target="self">Dfmusik</a>
<a href="http://www.dfmusik.de" target="_blank">Dfmusik</a>
<a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>

Warum testest du das eigentlich nicht selber?
 
Ich teste es doch selber, bei mir kommt das raus:

PHP:
<a href="http://www.dfmusik.de%5D%5D%0D%3Cbr%3E%3Ca%20href=" http:="" www.dfmusik.de="" target="self">Dfmusik]]
<br></a><a href="http://www.dfmusik.de" target="_blank">Dfmusik</a>
<br>
<br><a href="http://www.dfmusik.de" target="self">Dfmusik</a>
<br>[[http://www.dfmusik.deDfmusik
<br>[[http://www.dfmusik.de" target="_blank"&gt;http://www.dfmusik.de" target="_blank"&gt;Dfmusik

<br>
<br><a href="http://www.dfmusik.de" target="self">Dfmusik</a>
<br>[[http://www.dfmusik.deDfmusik
<br>[[http://www.dfmusik.de<br>

Kann es sein, dass das mit dem Rest meines Codes zusammenhängt?
 
Würde ich vermuten.
Denn sonst würden ja die gleichen Probleme bei mir auftreten, das tun sie aber nicht.
 
willst du mal gucken ob du hier nen fehler siehst?

PHP:
		$search[] = "/===(.*?)===/"; //Überschrift 1: ===
		$search[] = "/==(.*?)==/"; //Überschrift 2: ==
		$search[] = "/~~(.*?)~~/"; //Absatz
		$search[] = "/'''(.*?)'''/"; //Dicker Text: 3 ' Striche
		$search[] = "/''(.*?)''/"; //Kursiver Text: 2 ' Striche

		//Bild
		//von URL
		$search[] = "#\[\[Bild:http://www\.(.*?)\|(.*?)\|(.*?)px\|(Frame)\|(left|center|right)\]\]#i"; //Bild: Adresse, Untertitel, Breite, Rahmen, 
																								//Float
		$search[] = "#\[\[Bild:http://(.*?)\|(.*?)\|(.*?)px\|(Frame)\]\]#i"; 						//Bild: Adresse, Untertitel, Breite, Rahmen
		$search[] = "#\[\[Bild:http://(.*?)\|(.*?)\|(.*?)px\]\]#i"; 								//Bild: Adresse, Untertitel, Breite
		$search[] = "#\[\[Bild:http://(.*?)\|(.*?)px\]\]#i"; 										//Bild: Adresse, Breite
		$search[] = "#\[\[Bild:http://(.*?)\]\]#i"; 												//Bild: Adresse, Auto Breite 100px
		
		//Das hochgeladen wurde
		$search[] = "#\[\[Bild.*?)\|(.*?)px\|(Frame)\|(left|center|right)\]\]#i"; 				//Bild: Adresse, Untertitel, Breite, Rahmen, 
																								//Float
		$search[] = "#\[\[Bild.*?)\|(.*?)\|(.*?)px\|(Frame)\]\]#i"; 							//Bild: Adresse, Untertitel, Breite, Rahmen
		$search[] = "#\[\[Bild.*?)\|(.*?)\|(.*?)px\]\]#i"; 										//Bild: Adresse, Untertitel, Breite
		$search[] = "#\[\[Bild.*?)\|(.*?)px\]\]#i"; 											//Bild: Adresse, Breite
		$search[] = "#\[\[Bild.*?)\]\]#i"; 														//Bild: Adresse, Auto Breite 100px
		
		//Hyperlink
		/*
		$search[] = "#\[\[(.*?)\|(.*?)\|_(.*?)\]\]#"; 											//Link: Adresse, Alternativ Text, Target
		$search[] = "#\[\[(.*?)\|(.*?)\]\]#"; 													//Link: Adresse, Alternativ Text
		$search[] = "#\[\[(.*?)\|_(.*?)\]\]#"; 													//Link: Adresse, Target
		$search[] = "#\[\[(.*?)\]\]#"; 															//Link: Adresse
		*/

		$search[] = "#\[\[(.*?)\|(.*?)\|_(.*?)\]\]#";                                             
		$search[] = "#\[\[(.*?)\|(.*?)\]\]#";                                                   
		$search[] = "#\[\[(.*?)\|_(.*?)\]\]#";                                                    
		$search[] = "#\[\[(.*?)\]\]#";  

		//Tabelle
		$search[] = "#\{\|=(framed)\|(left|center|right)=#i";									//Eine neue Tabelle, rahmen, ausrichtung
		$search[] = "#\{\|=(left|center|right)=#i";												//Eine neue Tabelle, ausrichtung
		$search[] = "#\{\|=(framed)=#i";														//Eine neue Tabelle, rahmen
		$search[] = "#\{\|#"; 																	//Eine neue Tabelle

		$search[] = "#\|\}#"; 																	//Die Tabelle schließen
		$search[] = "#!#"; 																		//Eine Überschriften Zeile
		$search[] = "#\|\-#"; 																	//Eine neue Zeile

		$search[] = "#\|\|=(.*?)=#";															//Eine neue Spalte, Breite
		$search[] = "#\|\|#"; 																	//Eine neue Spalte

		$search[] = "#\|=(.*?)=#"; 																//Die 1. Spalte in einer neuen Zeile, Breite
		$search[] = "#\|#"; 																	//Die 1. Spalte in einer neuen Zeile

		//-----------------------------------------------------------------------------------------------------------------------------------
		//-----------------------------------------------------------------------------------------------------------------------------------
		$replace[] = '<h2>$1</h2>';
		$replace[] = '<h3>$1</h3>';
		$replace[] = '<p>$1</p>';
		$replace[] = '<strong>$1</strong>';
		$replace[] = '<em>$1</em>';

		//Bild
		$replace[] = '<div class="image_rahmen" style="width:$3px;float:$5"><img src="http://$1" width="$3" /><br />$2</div>';
		$replace[] = '<div class="image_rahmen" id="image_rahmen" style="width:$3px"><img src="http://$1" width="$3" /><br />$2</div>';
		$replace[] = '<div class="image"><img src="http://$1" width="$3" /><br />$2</div>';
		$replace[] = '<img src="http://$1" width="$2" />';
		$replace[] = '<img src="http://$1" width="100" />';
		
		$upload_dir = 'images/gallery/';
		$replace[] = '<div class="image_rahmen" style="width:$3"><img src="'.$upload_dir.'$1" width="$3" align="$5" /><br />$2</div>';
		$replace[] = '<div class="image" id="image_rahmen" style="width:$3"><img src="'.$upload_dir.'$1" width="$3" /><br />$2</div>';
		$replace[] = '<div class="image"><img src="'.$upload_dir.'$1" width="$3" /><br />$2</div>';
		$replace[] = '<img src="'.$upload_dir.'$1" width="$2" />';
		$replace[] = '<img src="'.$upload_dir.'$1" width="100" />';
		
		//Hyperlink#
		/*
		$replace[] = '<a href="$1" target="$3">$2</a>';
		$replace[] = '<a href="$1" target="_blank">$2</a>';
		$replace[] = '<a href="$1" target="$2">$1</a>';
		$replace[] = '<a href="$1" target="_blank">$1</a>';
		*/
		//Hyperlink
		$replace[] = '<a href="$1" target="$3">$2</a>';
		$replace[] = '<a href="$1" target="_blank">$2</a>';
		$replace[] = '<a href="$1" target="$2">$1</a>';
		$replace[] = '<a href="$1" target="_blank">$1</a>';

		//Tabelle
		$replace[] = '<table class="bbcode_tabelle" border="1" align="$2"><tr>';
		$replace[] = '<table class="bbcode_tabelle" border="0" align="$1"><tr>';
		$replace[] = '<table class="bbcode_tabelle" border="1"><tr>';
		$replace[] = '<table class="bbcode_tabelle" border="0"><tr>';
		$replace[] = '</td></tr></table>';
		$replace[] = '<tr class="header_td"><td valign="top">';
		$replace[] = '</td></tr><tr>';
		$replace[] = '</td><td valign="top" width="$1">';
		$replace[] = '</td><td valign="top">';
		$replace[] = '<td valign="top" width="$1">';
		$replace[] = '<td valign="top">';
		
		// Ersetzen
		@$data = preg_replace($search, $replace, $text);

		// Unwichtige <br /> Entfernen
		$match			= array();
		$ergebnis		= array();

		$match[] 		= "/<\/h1>(.*)<p[^>]*>/ui"; // Aus H1
		$match[]		= "/<\/h2>(.*)<p[^>]*>/ui"; // Aus h2

		$ergebnis[] 	= "</h1><p>";
		$ergebnis[] 	= "</h2><p>";
		$text			= @preg_replace($match, $ergebnis, $data);

		// Text ausgeben
		return $text;
 
HTML:
<a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>
<a href="http://www.dfmusik.de" target="_blank">Dfmusik</a>
<a href="http://www.dfmusik.de" target="self">Dfmusik</a>

<a href="http://www.dfmusik.de" target="self">Dfmusik</a>
<a href="http://www.dfmusik.de" target="_blank">Dfmusik</a>
<a href="http://www.dfmusik.de" target="_blank">http://www.dfmusik.de</a>

Funktioniert bei mir ebenfalls ohne Probleme...?
 
Zurück