webForumDet fria alternativet

preg_replace och $

8 svar · 625 visningar · startad av Kenchu

KenchuMedlem sedan apr. 2004113 inlägg
#1

Har lite problem med preg_replace och $. Följande fungerar:

$str = "hej";
echo preg_replace("/.+/", "lol", $str); // output: lol

Men inte följande:

$str = "$hej";
echo preg_replace("/.+/", "lol", $str); // output:

Vad är det som är knas?

GeinMedlem sedan sep. 20005 700 inlägg
#2

PHP tolkar $hej som en variabel även i strängen så kör:

$str = '$hej'; 
echo preg_replace("/.+/", "lol", $str); // output:
KenchuMedlem sedan apr. 2004113 inlägg
#3

Vad är det för skillnad på "" och '' egentligen? För nu har jag "egentligen" en fread så det blir liksom en sträng med "".

$file = fopen("main.htm","r");

while(true)

{

   // Försök låsa filen, om misslyckas, försök igen

   if (flock($file, LOCK_EX))

   {

      $str = fread($file, filesize("main.htm"));
      
      echo preg_replace("/\{(\$.+)\}/", "$1", $str);

      

      // "The lock is released also by fclose()"

      fclose($file);
      
      break;

   }

}
GeinMedlem sedan sep. 20005 700 inlägg
#4

En av skillnaderna är iaf att " " evaluerar variabler (du behöver alltså inte konkatenera manuellt, detta skulle jag däremot inte rekommendera). Denna evaluering görs inte inom ' '.

KenchuMedlem sedan apr. 2004113 inlägg
#5

Hur gör jag för att få $str från fread att bli en ' '?

GeinMedlem sedan sep. 20005 700 inlägg
#6

En variabel är liksom inte vare sig ' ' eller " ". Det är när du skriver strängar i koden som du använder dig av ' ' alternativt " ".
Vad är det du vill ska hända?

KenchuMedlem sedan apr. 2004113 inlägg
#7

Jag vill byta ut förekomster av {$värde} i en html fil med värdet av $värde i php-filen.

GeinMedlem sedan sep. 20005 700 inlägg
#8

Du har namnet på en variabel och vill skriva ut dess värde?
Normalt sett så gör du såhär:

$minvariabel = 'variabelinnehåll';
$var1 = 'minvariabel';
echo $$var1

Jag har dock inget svar (just nu) på hur du löser det i din preg_replace, om det ens går.

KenchuMedlem sedan apr. 2004113 inlägg
#9

Det fungerar om man tar bort $. :> Aja tack för svaren iaf.

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