| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

02-05-2009, 18:03
|
|
maffy
Registrierter Benutzer
|
|
Registriert seit: Oct 2002
Ort: Steinach - Bad Bocklet
Beiträge: 286
|
|
Vorlagen Parsen
Hallo:
Ich erstelle mir gerade ein Reisetagebuch wo ich Vorlagen wie bei Wikipedia z.B. für besuchte Museen, Orte usw. einbauen möchte.
Ich bekomme aber folgenden Fehler:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' on line 43
[CODE]
__________________
in der ruhe liegt die kraft
Geändert von maffy (03-05-2009 um 10:35 Uhr)
|

02-05-2009, 18:43
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
2.1 ... oder alle Vorkommen des Delimiters in Ausdruck escapen.
|

02-05-2009, 23:10
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Re: Vorlagen Parsen
Zitat:
Original geschrieben von maffy
Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' on line 43
Code:
//...
$muster = "/[Infobox Museum:($ifb_museum)]/i";
$str = preg_replace($muster, $museumoutput, $str);
}
// ...
|
Neben den Delimitern müssen auch bestimmte Zeichen, die eine Funktion in PCRE erfüllen, escaped werden. Die Funktion preg_quote() ist dein Freund:
PHP-Code:
// ...
// Aus der Zitatansicht kopieren, sonst fehlen Backslashes.
// Der komische Smiley-Code ist auch nicht von mir ...
$muster = '/\[Infobox Museum:('.
preg_quote($ifb_museum, '/') .
')\]/i';
// unter der Voraussetzung,
// dass die runden Klammern als Subpattern gewollt sind
$str = preg_replace($muster, $museumoutput, $str);
// ...
Außerdem würde ich auf doppelte Hochkommas als Begrenzer beim Zusammenbauen eines PCRE-Strings verzichten. Das stiftet nur Verwirrung, was wie zu escapen ist.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (02-05-2009 um 23:13 Uhr)
|

03-05-2009, 10:34
|
|
maffy
Registrierter Benutzer
|
|
Registriert seit: Oct 2002
Ort: Steinach - Bad Bocklet
Beiträge: 286
|
|
Hallo
Danke, so funktionier es.
PHP-Code:
$str ='
<p>Heute am 1 Tag waren wir im Museum XYZ in Musterdorf:</p>
[Infobox Museum:
| Name = MuseumXaZ
| Bild = MuseumXaZ.jpg
| Bildbeschreibung = Museum XaZ
| Ort = Musterdorf
| Art = Kunst
| Breitengrad = 00.00000
| Längengrad = 00.00000
| Region-ISO = DE
| Webseite = [url]http://www.test.de[/url]
]
<p>Am zweiten Tag der Reise waren wir ( gähn ) schon wieder in einem
Museum:</p>
[Infobox Museum:
| Name = Antonius Museum
| Bild = MuseumAntonius.jpg
| Bildbeschreibung = Hier schmeißt einer Butter in die Ecke
| Ort = Musterdorf
| Art = Butterscheiße
| Breitengrad = 00.00000
| Längengrad = 00.00000
| Region-ISO = DE
| Webseite = [url]http://www.test.de[/url]
]
';
preg_match_all("/\[Infobox Museum:(([^]]+))]/i", $str, $ifb_mus_fund);
foreach($ifb_mus_fund[2] as $ifb_museum) {
// Infobox trennen
$input = explode("|", $ifb_museum);
// Felder trennen
$museum_name = explode("=", $input[1]);
$museum_bild = explode("=", $input[2]);
$museum_bildtitel = explode("=", $input[3]);
$museum_ort = explode("=", $input[4]);
$museum_art = explode("=", $input[5]);
$museum_lat = explode("=", $input[6]);
$museum_lng = explode("=", $input[7]);
$museum_region = explode("=", $input[8]);
$museum_www = explode("=", $input[9]);
// Infobox ausgeben
$museumoutput = "<table border='1' cellpadding='2' cellspacing='2' width='45%' bgcolor='#A050A0'>";
$museumoutput .= "<tr><td>Name:</td> <td>".$museum_name[1]."</td></tr>";
$museumoutput .= "<tr><td>Bild:</td> <td>".$museum_bild[1]."</td></tr>";
$museumoutput .= "<tr><td>Bildtitel:</td> <td>".$museum_bildtitel[1]."</td></tr>";
$museumoutput .= "<tr><td>Ort:</td> <td>".$museum_ort[1]."</td></tr>";
$museumoutput .= "<tr><td>Art:</td> <td>".$museum_art[1]."</td></tr>";
$museumoutput .= "<tr><td>Breitengrad:</td> <td>".$museum_lat[1]."</td></tr>";
$museumoutput .= "<tr><td>Längengrad:</td> <td>".$museum_lng[1]."</td></tr>";
$museumoutput .= "<tr><td>Region:</td> <td>".$museum_region[1]."</td></tr>";
$museumoutput .= "<tr><td>Internet:</td> <td>".$museum_www[1]."</td></tr>";
$museumoutput .= "</table>";
//$muster = '/[Infobox Museum:($ifb_museum)]/i';
$muster = '/\[Infobox Museum:('. preg_quote($ifb_museum, '/') .')]/i';
$str = preg_replace($muster, $museumoutput, $str);
}
//print_r($ifb_mus_fund);
print $str;
__________________
in der ruhe liegt die kraft
Geändert von maffy (03-05-2009 um 10:42 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|