webForumDet fria alternativet

str_replace som inte vill?!?

2 svar · 223 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Jag har ett skript som omvandlar en textfil med ett frågesportsutkast som är lättläst för folk, till ett format som är lättare att behandla för datorn. Enligt nedan:

$txtStr = file_get_contents($filnamn);
$txtStr = preg_replace("/\n[\d]+\)/", "::Q::\n", $txtStr);
$txtStr = preg_replace("/\* |# /", "#A#\n", $txtStr);
$txtStr = str_replace("/:::/", "\n%%%", $txtStr);
echo nl2br("$txtStr");

Det sista str_replace:t vill inte! Varför?

Den fil jag läser in (eller snarast en dummyfil som har samma format och beter sig likadant, men är åtskilligt kortare):

  1. Vad geter Hans syster?
    * Greta ::: 1
    * Klara
    * Anna

  2. I vad bor häxan?
    * En hatt.
    * Ett pepparkakshus. ::: 1
    * En jordkula.

Resulterar i:

::Q::
Vad geter Hans syster?
#A#
Greta ::: 1
#A#
Klara
#A#
Anna

::Q::
I vad bor häxan?
#A#
En hatt.
#A#
Ett pepparkakshus. ::: 1
#A#
En jordkula.

Men VARFÖR i fridens namn utförs inte sista str_replace:t??? :q 'xxx :::' borde ju bli
'xxxx
%%%' eller? Vad är det jag inte ser???

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag som inte kan php tycker att din str_replace borde se ut så här:

$txtStr = str_replace(":::", "\n%%%", $txtStr);

Mvh

aasahMedlem sedan mars 20034 471 inlägg
#3

Tack, @nders! :birp

Att man kan bli så blind... :r Vådan av att snabbt inse att man kan byta från preg_replace till str_replace... suck.

128 ms totalt · 3 externa anrop · v20260731065814-full.37765c92
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)