我这里有这个代码:
$imagePreFix = substr($fileinfo['basename'], strpos($fileinfo['basename'], "_") +1);
这让我得到了下划线之后的所有内容,但我希望在下划线之前获取所有内容,我如何调整此代码以获得下划线之前的所有内容?
$fileinfo['basename']
等于' feature_00'
由于
答案 0 :(得分:10)
你应该简单使用:
$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_"));
我没有看到任何理由使用explode
并创建额外的数组只是为了获得第一个元素。
您也可以使用(在PHP 5.3 +中):
$imagePreFix = strstr($fileinfo['basename'], '_', true);
答案 1 :(得分:3)
如果您完全确定总是至少有一个下划线,并且您对第一个感兴趣:
$str = $fileinfo['basename'];
$tmp = explode('_', $str);
$res = $tmp[0];
其他方法:
$str = "this_is_many_underscores_example";
$matches = array();
preg_match('/^[a-zA-Z0-9]+/', $str, $matches);
print_r($matches[0]); //will produce "this"
(可能regexp模式需要调整,但为了这个例子的目的,它可以正常工作)。
答案 2 :(得分:2)
我认为最简单的方法是使用explode
。
$arr = explode('_', $fileinfo['basename']);
echo $arr[0];
这会将字符串拆分为子字符串数组。数组的长度取决于_
的实例数。例如
"one_two_three"
会被分成一个数组
["one", "two", "three"]
答案 3 :(得分:1)
如果你想要一个你所建议类型的老派答案,你仍然可以做到以下几点:
$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_"));