mjr mjr - 1 year ago 49
PHP Question

find beginning of a string inside an array of strings in php

I know we have the php in_array function

but I'm looking for a way to find values in an array of strings who beginning matches a specific string

for example find...

$search_string = '<div>1</div>';

in an array like this...

$array = (
'sample' => '<div>1</div><p>fish food</p>',
'sample2' => '<div>2</div><p>swine</p>

does that make sense

Answer Source

You can either loop on all lines of the array, and use strpos on each string ; a bit like this :

$search_string = '<div>1</div>';
$array = array(
    'sample'  => '<div>1</div><p>fish food</p>',
    'sample2' => '<div>2</div><p>swine</p>'

foreach ($array as $key => $string) {
  if (strpos($string, $search_string) === 0) {

Which will get you the key of the line that starts with your search string :

string 'sample' (length=6)

Or preg_grep might do the trick too :

Returns the array consisting of the elements of the input array that match the given pattern .

For instance :

$result = preg_grep('/^' . preg_quote($search_string, '/') . '/', $array);

(Don't forget to use preg_quote ! )

Will get you :

  'sample' => string '<div>1</div><p>fish food</p>' (length=28)

Note that, this way, you don't get the key, but only the content of the line.