CSS ofset dikey getirmesi Düzenli İfade

3 Cevap php

Neredeyse bir saat için bu işe yaramaz olmuştur ve hiçbir yerde alıyorum. Regexes benim güçlü takım değil.

Ben aşağıdaki gibi bir veri var:

.cke_button_about .cke_icon { background-position: 0 -76px; }
.cke_button_maximize .cke_icon { background-position: 0 -108px; }

I preg_replace_callback() kullanarak dikey değerleri (-76px ve-108px) değiştirmeniz gerekiyor. Geri çağırma işlevi yazılır, ama beni yaşam için doğru sayıları çıkamayız.

Bu 4 basamaklı sayılar için çalışıyor:

preg_replace_callback("/(background\-position\:)(.*)(\d{4})(px)/", "recalculate",
$css_string);

ama nasıl bu kadar bu sayının her türlü tanır yapabilir? {1-4} çalışır ama bir türlü ilk, yatay değeri ile çakışan gerekir.

Kimse bana yardım etmek ister misiniz?

Şimdiden teşekkürler.

3 Cevap

/(background\-position\:)(\D*\d*\D*)(\d+)(px)/

Geçerli yakalama gruplaşmalar koruyarak istediğini alır.

((-?)[-9.]+) muhtemelen daha iyi olurdu, bu şu durumlarda maç olacaktır:

  • 1.
  • 1
  • -4
  • 642,42
  • -642,42

Tüm kod, bu gibi bir şey olacaktır:

preg_replace_callback("/(background\-position\:)(.*?)((-?)[-9.]+)(px)/", "recalculate",
$css_string);

Yapabileceğiniz (background\-position)(.*)([0-9]+)(px)?