ereg_replace

Hallö!

Eigentlich ganz einfaches Problem:
Ich will t.B. „*text*“ in " text" umwandeln. Das „text“ kann hierbei ein beliebiger Ausruck sein, der zwischen den * steht.
Nun ist die Frage: Wie krieg ich das „text“ und das „*“ einzeln?

Im Moment löse ich das, indem aus „*text*“ ein „/*text*/“ mache und danach nochmal einzeln /* durch und */ durch ersetze.

Geht das auch einfacher?

vllt ne doofe lösung…
aber wie wäre es so:

$pos = strpos($text,"\*");
while ($pos\>0)
{
if ($marker == 0)
 {
 $ausgabe .= substr($text,0,$pos)."**."substr($text,$pos+1);  
 $marker=1;  
 }  
else  
 {  
 $ausgabe .= substr($text,0,$pos)."**."substr($text,$pos+1);
 $marker=0;
 }
$pos = strpos(substr($text,$pos+1),"\*");
}

vereinfacht dargestellt…
Was natürlich noch rein müsste wäre eine Abfrage nach dem zweiten sternchen, damit die Länge für das substr($text,$pos+1) auch noch einen „Endwert“ erhält…
ich denk aber dass es auch noch einfacher gehen wird…

da hat mir wer was gefressen ^^

$pos = strpos($text,"*");
while ($pos>0)
{
if ($marker == 0)
{
$ausgabe .= substr($text,0,$pos)."".substr($text,$pos+1);
$marker=1;
}
else
{
$ausgabe .= substr($text,0,$pos)."".substr($text,$pos+1);
$marker=0;
}
$pos = strpos(substr($text,$pos+1),"*");
}

der Punkt war eh um eins falsch gesetzt *g*

Hallo,

was Du suchst, ist eine Regular Expression.

Müsste so heißen: /*(.)**/

Diese RE sucht nach Wörter, die von * umschlossen sind.

Hoffe, Du meinetst das so.

Daniel

Danke! & Kleine Korrektur meiner selbst

Im Moment löse ich das, indem aus „*text*“ ein „/*text*/“
mache und danach nochmal einzeln /* durch und */ durch
ersetze.

Da fehlen wohl zwei Stückchen aus meinem Test… also, um die Verwirrung etwas zu lindern, nochmal:

Im Moment löse ich das, indem aus „*text*“ ein „/*text*/“
mache und danach nochmal einzeln /* durch und */ durch
ersetze.

(Die Bindestriche sind nur zur Aushilfe)

Nachdem ich von ereg-replace abstand genommen hab und „von Hand“ im String nach den Zeichen suche, geht das auch prima.

Danke für die Tipps!