Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "Zamiana" z _pole_ na $row["_pole_"]
Forum PHP.pl > Forum > PHP
MoD
W jaki sposób przekonwertować wyrażenie "pole == wartość" na "$row['pole'] == wartość" questionmark.gif
Próbowałem przy preg_replace z takim wyrażeniem:
Kod
#(.+)\s(.+)#

Co dało wynik "$row['pole ==']wartość" a tak być nie powinno (potrzebuję zbudować warunek dla EVAL). Z góry dziękuję za pomoc.
bendi
Jezlei juz checesz koniecznie wyrazeniami regularnymi to mozna tak:
  1. <?php
  2.  
  3. $sString = 'costam1 == wartosc1 costam2 == wartosc2 costam3 == wartosc3';
  4. preg_match_all( '%([w]+) == ([w]+)%s', $sString, $arMatches );
  5.  
  6. ?>

O ile sie nie myle tablica $arMatches[1] zawiera klucze a $arMatches[2] zawiera wartosci

Chociaz jezlei masz tylko jedna taka pare to wcale nie trzeba do tego wyrazen regularnych wystarczy explode:
  1. <?php
  2.  
  3. $sString = 'costam1 == wartosc1';
  4. list( $klucz, $wartosc ) = explode( '==', $sString );
  5. $row[$klucz]= $wartosc;
  6.  
  7. ?>

A jezeli chodzi Ci o pobieranie danych z bazy to funkcja mysq_fetch_array zwraca wyniki zapytania jako tablice asocjacyjna wiec zadna zamiana nie jest konieczna (tak mi sie jakos skojarzylo jak zobaczylem row, wiec sie prosze nie obrazac;)
rogrog
Ze względów wydajnościowych zawsze jeśli jest to możliwe zamiast wyrażeń regularnych należy używać str_replace" title="Zobacz w manualu PHP" target="_manual.
MoD
chodzi o to, że "==" dałem jako przykład. Można przecież użyć ">" i wtedy skrypt się wali.
bendi
Jezeli tam bedzie spacja odstepu (dokladnie jedna) miedzy na koncu klucza i na poczatku wartosci, to mozna tak:
  1. <?php
  2. $sString = 'costam1 == wartosc1  costam2 == wartosc2 costam3 == wartosc3';
  3. preg_match_all( '%([w]+) [^ w]+ ([w]+)%s', $sString, $arMatches );
  4. ?>


Sorka sprawdzilem zagadanienie i spacje wcale nie sa potrzebne winksmiley.jpg)

  1. <?php
  2. $sString = 'costam1 == wartosc1  costam2==wartosc2 costam3 == wartosc3';
  3. preg_match_all( '%([w]+)[W]+([w]+)%s', $sString, $arMatches );
  4. //$arMatches[1] - klucze
  5. //$arMatches[2] - wartosci
  6. ?>
MoD
Okay, już sobie poradziłem. Dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.