我在PHP变量中有这个字符串(示例):
@font-face {
src: url('../some-font.eot?v=4.6.3');
}
我需要在每一行搜索 .eot?。如果找到,请执行替换,结果为:
@font-face {
src: url('../some-font.eot');
}
非常感谢任何帮助。
答案 0 :(得分:3)
答案 1 :(得分:2)
搜索字符串,然后搜索不是封闭封装字符的所有内容。
eot\?[^'"]+
正则表达式演示:https://regex101.com/r/SEPPHc/1/
PHP演示:https://eval.in/761197
PHP:
$string = "@font-face {
src: url('../some-font.eot?v=4.6.3');
}";
echo preg_replace('/eot\?[^\'"]+/', 'eot', $string);
答案 2 :(得分:0)
这里有一个广泛的正则表达式(它将与第一个?
匹配几乎任何东西),但这应该为您提供路径的起点:
echo preg_replace("/^([^?]+).*/", "$1", "../some-font.eot?v=4.6.3");
打印:
../一些-font.eot
您需要移除锚点并添加一些上下文以便在整个文件中进行搜索,例如使用正面的后观。
echo preg_replace("/(?<=src: url\(')([^?]+)[^']*?/", "$1", "src: url('../some-font.eot?v=4.6.3');");
打印:
src:url('../ some-font.eot');
lookbehind将确保您最终只会替换您关注的网址(例如,它不会触及评论,content
属性等。)