CSS bir css değerini değiştirir Regex

0 Cevap php

Hey. I'm trying to parse a CSS file using PHP.

Ben bu ifadeyi çalıştırmak çalışıyorum:

"/(". $selector . "\\s*{[\\w\\s:\\-;()#]*)(" . $property . ":)([^;}]+)(}?)/Ui"

Bu regex bir seçici içinde belirli bir özellik aşağı bacağına ve beni çıkarın / o değerini değiştirmek için izin gerekiyordu.

Rasyonel:

  1. seçici ile eşleşen ve mülkiyet Yukarıdaki metin bulunuyor
  2. özellik adı eşleşen
  3. özellik değeri ile eşleşmesi
  4. değer} işaretiyle biterse - de bunu yakalamak

Kırık bit # 3 - bazı bilinmeyen bir nedenle, ben preg_match ile bu çalıştırdığınızda, değer grubu (# 3), sadece ilk karakter yakalar.

Örneğin, bu ifade çalışan:

preg_replace("/(h1\s*{[\w\s:\-;()#]*)(font-size:)(([^;}])+)(}?)/Ui","$1 $4",$css);

(H1 seçicinin font-size özelliği bulmak ve mülkiyet ve değerini kaldırın)

Bu css grup:

h1{
    background:#fff;
    font-size:10px;
    text-align:underline;
    color:#abc;
}

Alıyorum:

h1{
    background:#fff;
    /* note that although the property was matched and removed,
       the value only matched the 1st char: 1 */ 
    0px; 
    text-align:underline;
    color:#abc;
}

Ben bazı test araçları yoluyla ifade kontrol etmek için denedim ve iyi çalıştı, bu yüzden bu bir gebelik * belirli bir sorun olduğunu tahmin ediyorum.

Ben ne yapıyorum yanlış herhangi bir fikir?

0 Cevap