php str_replace dizinin içindeki değişken tanımlamak

2 Cevap php

Ben uygun bir içerik ile böyle {HEADER} olarak metin yerine bir şablon sistemi var. Ben str_replace kullanarak değeri ile anahtarın yerini böyle bir dizi kullanın.

$array = array("HEADER","This is the header");
    foreach($array as $var => $content) {
       $template = str_replace("{" . strtoupper($var). "}", $content,$template);
    }

Şimdi bu böyle tanımlanmış bir değişkeni kullanmaya çalışırken im:

define("NAME","Site Name");

Başlığı için değeri içindeki. Yani tanımlı değişken bu gibi görünür böylece yerini alır dizi içinde olmak istiyorum, ama çalışmıyor.

$array = array("HEADER","Welcome to ".NAME."'s website!");

Herhangi bir fikir? söyle im net değilse

2 Cevap

Diziniz hat olmamalı:

$array = array("HEADER" => "Welcome to ".NAME."'s website!");

Eğer anahtar ve değer ile dizi öğelerini erişen beri?

Kullandığınız, dizi içinde döngü yolu:

foreach($array as $var => $content) {
    // ...
}

Bana sizin $array için bir associative array kullanmak gerektiğini düşünüyorum yapar.

yani, bu şekilde beyan edilmelidir:

$array = array("HEADER" => "Welcome to ".NAME."'s website!");


And, as a demonstration, here's an example of code :

$template = <<<TPL
Hello, World !
{HEADER}
And here's the content ;-)
TPL;

define("NAME","Site Name");

$array = array("HEADER" => "Welcome to ".NAME."'s website!");
foreach($array as $var => $content) {
   $template = str_replace("{" . strtoupper($var). "}", $content,$template);
}

var_dump($template);

Ve çıkış anladım:

string 'Hello, World !
Welcome to Site Name's website!
And here's the content ;-)' (length=73)

Which indicates it's working ;-)
(It wasn't, when $array was declared the way you set it)


When using this :

$array = array("HEADER","This is the header");
var_dump($array);

Iki öğe içeren bir dizi ilan edilir:

array
  0 => string 'HEADER' (length=6)
  1 => string 'This is the header' (length=18)


On the other hand, when using this :

$array = array("HEADER" => "This is the header");
var_dump($array);

O bir dizi ilan edilir:

  • yalnızca bir öğe içerir
  • Tuş olmak "HEADER"
  • ve değeri olan "Bu başlığıdır"

Verir:

array
  'HEADER' => string 'This is the header' (length=18)


When using foreach ($array as $key => $value), you need the second one ;-)


And, purely for reference, you can take a look at, in the manual, the following pages :