我的字符串看起来像
$img_name = "my_beautiful_picture_123456_789101112131415_16171819202122.jpg"
从第一个下划线然后到最后一个数字的最简单删除方法是什么?
我想输出
my_beautiful_picture
我尝试过
$img_name = substr($img_name, 0, strpos($img_name, "_"));
和
$img_name = preg_replace('/_[0-9].*/', '', $img_name);
但是两者的结果都是my
,我对正则表达式不是很熟悉。
答案 0 :(得分:3)
根据我在您之前发布的ideone链接中看到的代码,我知道可能会发生什么。如果您以前这样尝试过:
echo $img_name2 = "my_beautiful_picture_123456_789101112131415_16171819202122.jpg";
echo " | ";
echo $img_name2 = substr($img_name2, 0, strpos($img_name2, "_"));
echo " | ";
echo $img_name2 = preg_replace('/_[0-9].*/', '', $img_name2);
preg_replace
看起来像无效的原因是,在您使用{之前,先前的substr
已经将$img_name2
还原为“我的” {1}}。由于“我的”没有任何下划线或数字,因此该正则表达式不匹配任何内容,因此没有替换任何内容,因此您最终得到了相同的“我的”。
答案 1 :(得分:2)