webForumDet fria alternativet
Logga in / Bli medlem

preg_replace och $

PHP

8 svar · 625 visningar · startad av Kenchu

Medlem sedan apr. 2004113 inlägg
Frågan#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?

Medlem 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:
Medlem 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;

   }

}
Medlem 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 ' '.

Medlem sedan apr. 2004113 inlägg
#5

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

Medlem 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?

Medlem 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.

Medlem 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.

Medlem sedan apr. 2004113 inlägg
#9

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

256 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)