PHP get everything in a string before underscore [duplicate]
Asked Answered
S

4

8

I have this code here:

$imagePreFix = substr($fileinfo['basename'], strpos($fileinfo['basename'], "_") +1);

this gets me everything after the underscore, but I am looking to get everything before the underscore, how would I adjust this code to get everything before the underscore?

$fileinfo['basename'] is equal to 'feature_00'

Thanks

Sequence answered 9/7, 2014 at 18:39 Comment(1)
After the first underscore? What if you've got multiple underscores?Alexandria
D
22

You should simple use:

$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_"));

I don't see any reason to use explode and create extra array just to get first element.

You can also use (in PHP 5.3+):

$imagePreFix = strstr($fileinfo['basename'], '_', true); 
Debauchee answered 9/7, 2014 at 18:43 Comment(0)
W
4

If you are completely sure that there always be at least one underscore, and you are interested in first one:

$str = $fileinfo['basename'];

$tmp = explode('_', $str);

$res = $tmp[0];

Other way to do this:

$str = "this_is_many_underscores_example";

$matches = array();

preg_match('/^[a-zA-Z0-9]+/', $str, $matches);

print_r($matches[0]); //will produce "this"

(probably regexp pattern will need adjustments, but for purpose of this example it works just fine).

Winebibber answered 9/7, 2014 at 18:42 Comment(0)
H
2

I think the easiest way to do this is to use explode.

$arr = explode('_', $fileinfo['basename']);
echo $arr[0];

This will split the string into an array of substrings. The length of the array depends on how many instances of _ there was. For example

"one_two_three"

Would be broken into an array

["one", "two", "three"] 

Here's some documentation

Hartle answered 9/7, 2014 at 18:41 Comment(0)
R
1

If you want an old-school answer in the type of what you proposed you can still do the following:

$imagePreFix = substr($fileinfo['basename'], 0, strpos($fileinfo['basename'], "_"));

Replevy answered 9/7, 2014 at 18:44 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.