Autor Zpráva
panasonixxon
Profil *
Dobrý den,
měl bych prosbu, na reguláry jsem dřevo a věřím že pro některé z Vás je to brnkačka.
potřeboval bych převést while($i = Database::method($q)) na foreach ($q as $i)

důvodem je změna vstupu z mysql_result za asociativní pole. Mnohokrát předem děkuji
panasonixxon
Profil *
Teď mě napadlo, že bych mohl dostat odpovědět ať to nahradím. Zapomněl jsem totiž říc, že proměnné $i a $q se tak nejmenuji vždy prostě $cokoliv a $necojineho , proto vás prosím o řešení toho regularu
Martin2
Profil *
Pouštět tupě textový regulár pro replace nad scriptem je docela nebezpečná zběsilost – k tomuto účelu slouží refactoring, který bude rozumět tomu, co mění a hlavně budeš moci kontrolovat (nebo vrátit zpět) to, co mění.

Pořiď si nějaké normální IDE, náhrada while za foreach by nemusela být zase tak neobvyklý use case.
panasonixxon
Profil *
Martin2:
Nechtěl jsem se pouštět do ručního přepisu asi 120 while po celém systému, a regular mi přišel jako dobrý nápad, protože je potřeba ty proměnné prohodit ve foreachi jsou obráceně než ve while


A IDE mám dobré NetBeans a PHPStorm
panasonixxon
Profil *
tak jsem nakonec dal dohromady toto
najít: while [(](\$[\w]+)(?:.*)(\$[\w]+)[)]{2}
nahradit: foreach ($2 as $1)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: