2014-02-28 71 views
0

我有一個帶有數字值的CSS文件,並附加像「width:500px;」的px。我需要使用php從頭到尾閱讀這個文件,並且在發現任何地方更改所有數值.i.e。將500px轉換爲其他一些東西,比如50%(width:250px)。我們如何做到這一點,也許使用正則表達式。如何在php中讀取文件中的所有數值?

$file = fopen("file.css", "r+") or exit("Unable to open file!"); 
while(!feof($file)) 
{ 
if(numeric value between space and px) 
//replace by its 50% 
} 
fclose($file); 

此代碼僅僅是爲了解釋問題,解決方案可以完全不同。

+0

也許你應該看看'is_numeric()來' –

+0

沒有'is_numeric()來'不會在這種情況下工作。 – XIMRX

+0

你可能只需使用PHP來改變你的CSS文本。使用mycss.php文件會得到變量,這比使用替換解析更可靠和更快。那就是如果這不是一次性的事情。如果你經常需要改變這些值,我推薦一個php文件。 –

回答

1

使用preg_replace_callback

$str = preg_replace_callback('/:\s*(\d+)px/', 
    function($m) { 
     return ': '.($m[1]/2).'px'; 
    }, 
    $str); 
+0

爲什麼你需要'px'? '\ b \ d +'會選擇所有數字,包括'em'等等...... – Robin

+0

@Robin:OP只想在px中轉換值。 – Toto

0

你可能尋找的正則表達式是

^[\d]*(\.\d*)?(px)?(%)?(em)?$ 

或不十進制值

^[\d]*(px)?(%)?(em)?$ 

如果您還想這應該與所有大小..顏色(RGB/RGBA格式)然後看看this question這可能會激勵你。

+0

等待,需要考慮十進制數字。我會盡快更新它。 – Dropout

+0

沒有十進制值謝謝讓我測試 – XIMRX

+0

好的,兩種方式;) – Dropout

相關問題