[PHP] Zamień wyrażenie regex na zmienną

Pytania i problemy
php
KajmaczeK
KajmaczeK

Cześć, mam w bazie string. W stringu chcę umieścić zmienną $s['costam']. Zapisuję ją w taki sposób: |s+costam|. Pobieram tą wartość, przypisuję stringa do zmiennej, za pomocą preg_replace zmieniam wszystko w formacie |x+xxx| na $x['xxx']. Wyświetlam tego stringa na stronie... I wyświetla $s['costam']. Co zrobić, żeby mi wyświetlało wartość tej zmiennej?

W kodzie:

Baza danych:

| key | value                           |
-----------------------------------------
| cos | cos cos cos cos cos |s+cos| cos | 

W pliku:

$q = mysqli_query(...)
while($a = mysqli_fetch_array($q)) {
    $l[$a['key']] = $a['value'];
}
 
foreach($l as $key => $value) {
    $value = preg_replace('/\\|(\\w+)\\+(\\w+)\\|/i', '$\\1["\\2"]', $value);
    $l[$key] = $value;
}
 
echo $l['cos'];

Output:

cos cos cos cos cos $s["cos"] cos

A chcę, żeby było (załóżmy, że $s["cos"] = NIC):

cos cos cos cos cos NIC cos

No i tak. Nie wiem, jak to wyraźniej wytłumaczyć :/ Pozdrawiam, KK

DarkDev
DarkDev

Tutaj taki tutek ;) Tutek A jeśli nie wiesz jak coś wytłumaczyć to opisz to dokładniej (co miało by robić itp.) Myślę że jakoś pomogłem :P

KajmaczeK
KajmaczeK

Dobra, spróbuję inaczej wytłumaczyć. Mam taki kod:

$array = ["ipsum" => "IPSUM"];
$string = "lorem lorem lorem lorem lorem lorem |array+ipsum| lorem lorem";

Potrzebuję zmienić |array+ipsum| na zmienną $array["ipsum"] - czyli wynik po wyświetleniu ma być taki:

lorem lorem lorem lorem lorem lorem IPSUM lorem lorem

Na razie wychodzi mi tak:

lorem lorem lorem lorem lorem lorem $array["ipsum"] lorem lorem

Kod:

$string = preg_replace('/\\|(\\w+)\\+(\\w+)\\|/i', '$\1["\\2"]', $string);

(wszystko w formie |xx+xxx| zmienia na $xx["xxx"])

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.