我想删除第一个号码后的所有内容(包括号码)。
示例:
banner400x300
icon80x42
bla bla55x44
应该是:
banner
icon
bla bla
我试过这样的事情:
preg_replace("/([^0-9]*[0-9]*)(.*)/", "$1", $str);
但它包括第一个数字:(
这样做的好方法是什么?谢谢:))
答案 0 :(得分:3)
原因是第一个捕获组包含[0-9]*
,因此通过$1
反向引用重新插入到结果中。
最简单的正则表达式是
preg_replace('~\d.*~', '', $s)
请参阅regex demo
\d.*
正则表达式找到带有\d
的第一个数字(因为字符串是从左到右处理的),而.*
将匹配到行的末尾(以匹配换行,添加s
修饰符:'~\d.*~s'
)。
$str = "banner400x300\nicon80x42\nbla bla55x44";
$result = preg_replace('~\d.*~', '', $str);
echo $result;