WinFuture-Forum.de: Textersetzung + Variable - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Textersetzung + Variable


#1 _USA_

  • Gruppe: Gäste

geschrieben 14. Mai 2008 - 08:44

Hi, ich hätte ein Problem. Undzwar:

Ich möchte, dass mir ein PHP Script folgendes in einem String sucht:
>> "hallo, blablabla sdfk [parameter=blablabla] schmabla..."
und dann hiermit ersetzt:
>> "halla, blablabla sdfk " . irgendeine.funktion(blablabla) . " schmabla..."

Ich hoffe ihr wisst, was ich meine. Wie krieg ich sowas hin?

Dieser Beitrag wurde von USA bearbeitet: 14. Mai 2008 - 08:45

0

Anzeige



#2 Mitglied ist offline   amalbhalbe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 639
  • Beigetreten: 14. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:BMW E38 740i V8 286 PS 4.4L Hubraum
  • Interessen:Design is the production of braindysentery

geschrieben 14. Mai 2008 - 08:50

meinst du sowas?

angenommen in der index.htm steht z.b "willkommen [USER], wie gehts?"

$tpl = file_get_contents ("./pfad/zur/Datei/index.htm");

$tpl = str_replace ("[USER]", "Wert/Variable/was auch immer", $tpl);

echo $tpl;

-> dann wird in der eingelesenen Datei einfach der String durch einen anderen Wert überschrieben den kannst du halt irgendwie definieren, sql abfrage, fixe variable was auch immer.
Pc is my life, amd my world, intel my enemy and Linux my Hell
0

#3 _USA_

  • Gruppe: Gäste

geschrieben 14. Mai 2008 - 08:58

Beitrag anzeigenZitat (amalbhalbe: 14.05.2008, 09:50)

meinst du sowas?

Nicht ganz. Also ich hab nen String, da steht [user=amalbhalbe] drinnen.
Dann soll er [user=amalbhalbe] durch den Rückgabewert der Funktion funktion("amalbhalbe") ersetzen.
Wenn aber drinnen steht [user=USA], dann soll er das durch den Rückgabewert der Funktion funktion("USA") ersetzen.
0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Mai 2008 - 09:42

Das solltest du mit Regex in einer Zeile (wo wir wieder beim Thema wären :P) hinbekommen.

Wenn du nicht fit in Regex bist, könntest du wiefolgt rangehen:
1. Positionen der eckigen Klammern bestimmen (strpos)
2. Inhalt zwischen den beiden eckigen Klammern holen (substring)
3. Nach "=" in ein Array splitten und die zweite Stelle, den Namen, merken (explode)
4. den Namen in die Funktion setzen function($name);

Natürlich nur, falls ich dich richtig verstanden habe.
0

#5 _USA_

  • Gruppe: Gäste

geschrieben 14. Mai 2008 - 09:58

Ich wäre an dem Regex interessiert, da das andere mehr ein Rumgepfusche ist.^^
Könntest du mir mal zeigen, wie sowas mit einem Regex ausschaut?
Bin zwar nicht vertraut damit, aber wenn ich das Muster sehe, kann ich mir was zusammenbasteln.^^ (Learning by doing © - Mein Motto^^)

Gruß USA

PS: Es sollte auch möglich sein, dass es im Text mehrere Stellen zum Ersetzen gibt...
PS2: Zu deiner 1-Zeile-Philosophie sag ich jetzt mal nichts.^^

Dieser Beitrag wurde von USA bearbeitet: 14. Mai 2008 - 10:00

0

#6 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Mai 2008 - 10:52

Ich habe es mal in vier Zeilen gemacht. :P

$str = "hallo, blablabla sdfk [parameter=blablabla] schmabla";
$regex = '/\[*=(.*)\]/';
preg_match($regex, $str, $matches);
echo $matches[1];


Das wichtige ist die Zeile mit dem regulären Ausdruck. Die runden Klammern bewirken, dass der gefundene Ausdruck gespeichert wird um ihn später über $matches auslesen zu können.

Edit:

USA sagte:

PS: Es sollte auch möglich sein, dass es im Text mehrere Stellen zum Ersetzen gibt...

$str = "hallo, [parameter=foobar] blablabla sdfk [parameter=blablabla] schmabla";
$regex = '/\[*=(.*)\]/U';
preg_match_all($regex, $str, $matches);
var_dump($matches);

Dieser Beitrag wurde von Witi bearbeitet: 14. Mai 2008 - 10:59

0

#7 _USA_

  • Gruppe: Gäste

geschrieben 14. Mai 2008 - 12:59

So, ich hab mir mal das hier draus gebastelt:

<?php
	$Inhalt = "Hallo, dies soll ein [url=Startseite]Link[/url] sein. Und das hier noch [url=Programme]einer[/url].";
	$regex = "/\[url=(.*)\](.*)\[\/url\]/U";
	preg_match_all($regex, $Inhalt, $Treffer);
	$Links = $Treffer[1];
	$Titel = $Treffer[2];
	print_r($Treffer);

	$i = 0;

	foreach($Links as $Link)
	{
		echo '<br><a href="' . $Link . '">' . $Titel[$i] . '</a>';
		$i++;
	}

	echo "<br>$i Links gefunden";
?>

Dieser Beitrag wurde von USA bearbeitet: 14. Mai 2008 - 17:02

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0