我一直在摆弄这个差不多一个小时而且无处可去。正则表达不是我的强项。
我有以下数据:
.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}应该可以工作,但不知何故与第一个水平值冲突。
有人愿意帮帮我吗?
提前致谢。
答案 0 :(得分:3)
((-?)[0-9.]+)
可能会更好,这将符合以下情况:
整个代码将是这样的:
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);
怎么样? +
表示“一个或多个”