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!