Ben PHP bazı eski perl cgi formları dönüştürme üzerinde çalışıyorum bir proje var. Bu bir çok bilgilerinin değiştirilmesini / bulguyu gerektirir. Böyle bir durumda, ben perl komut dosyası bu gibi satırlar vardır:
<INPUT type="radio" name="trade" value="1" $checked{trade}->{1}>
hangi okumak gerekiyor:
<INPUT type="radio" name="trade" value="1" <?php echo checked('trade', 1); ?>>
Başka bir örnek bu etiketleri perl / html göstermek nasıl bazı varyasyon göstermek için:
<INPUT type="radio" name="loantype" value="new" $checked{loantype}->{new}>
<INPUT type="radio" name="loantype" value="new" $checked{'loantype'}->{new}>
<INPUT type="radio" name="loantype" value="new" $checked{'loantype'}->{'new'}>
<INPUT type="radio" name="loantype" value="new" $checked{loantype}->{'new'}>
Gördüğünüz gibi, her yerde tırnak hakkında olabilir, ama bu benim sorunum değil. Ben hayatımı biraz kolaylaştırmak için Textmate bir yerini bulmak / regex yazmaya karar verdim. Benim Regex gibi görünüyor:
Find: \$checked\{'?([^']+)'?\}->\{'?([^']+)'?\}
Replace: <?php echo checked('$1', '$2'); ?>
Bu ben yaptım ilk dosyada para cezası çalıştı, ama nedense Geçerli dosyada Regex birçok çizgiler uyan, gerçekten açgözlü hale gelmiştir. Bu begininng maç (\ $ işaretli ...) ve ardından karakter '}' görünen son zamana kadar maç olacak. Ben de dahil olmak üzere biraz daha az açgözlü olmak için birkaç varyasyonları denedim:
^(.*)\$checked\{'?([^']+)'?\}->\{'?([^']+)'?\}(.*)$
Ancak bu bile birden fazla satır maç gibi görünüyor. Ben sadece bir satırın başlangıcını maç olur ve sonunda $ sadece 1 hattına benim maç kısıtlayıcı ... sonunu maç olur başında ^ kabul ... ama göründüğü gibi değil.
/ Me regex başarısız oluyor
Thanks for any help, Mike