正则表达式从CSS获取垂直偏移量

时间:2009-12-14 21:54:49

标签: php regex

我一直在摆弄这个差不多一个小时而且无处可去。正则表达不是我的强项。

我有以下数据:

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

我需要使用preg_replace_callback()替换垂直值(-76px和-108px)。写回调函数,但我不能在我的生活中正确地得到数字。

这适用于4位数字:

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

但是如何才能识别任何类型的数字呢? {1-4}应该可以工作,但不知何故与第一个水平值冲突。

有人愿意帮帮我吗?

提前致谢。

4 个答案:

答案 0 :(得分:3)

((-?)[0-9.]+)可能会更好,这将符合以下情况:

  • 1.0
  • 1000
  • -400
  • 642.42
  • -642.42
  • 0

整个代码将是这样的:

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

答案 1 :(得分:1)

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

在保留当前捕获分组的同时获取所需内容。

答案 2 :(得分:1)

你能(background\-position)(.*)([0-9]+)(px)吗?

答案 3 :(得分:0)

preg_replace_callback("/(background\-position\:)\s*(\d+)\s+(\d{4})(px)/", "recalculate", $css_string);怎么样? +表示“一个或多个”