I have an array of strings that I want to try and match to the end of a normal string. I’m not sure the best way to do this in PHP.
This is sorta what I am trying to do:
Example:
Input: abcde
Search array: er, wr, de
Match: de
My first thought was to write a loop that goes through the array and crafts a regular expression by adding “\b” on the end of each string and then check if it is found in the input string. While this would work it seems sorta inefficient to loop through the entire array. I’ve been told regular expressions are slow in PHP and don’t want to implement something that will take me down the wrong path.
Is there a better way to see if one of the strings in my array occurs at the end of the input string?
The preg_filter() function looks like it might do the job but is for PHP 5.3+ and I am still sticking with 5.2.11 stable.
For something this simple, you don’t need a regex. You can either loop over the array, and use strpos to see if the index is length(input) – length(test). If each entry in the search array is always of a constant length, you can also speed things up by chopping the end off the input, then comparing that to each item in the array.
You can’t avoid going through the whole array, as in the worst general case, the item that matches will be at the end of the array. However, unless the array is huge, I wouldn’t worry too much about performance – it will be much faster than you think.