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

KajmaczeK | 2021-02-17 10:26:09 UTC | #1

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 | 2016-11-14 17:35:22 UTC | #2

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 | 2016-11-14 17:44:20 UTC | #3

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 | 2021-02-17 10:26:30 UTC | #4

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