rockstardev
rockstardev

Reputation: 13527

Simplest way to use wildcard in string replacement?

I have the following strings:

Johnny arrived at BOB
Peter is at SUSAN

I want a function where I can do this:

$string = stripWithWildCard("Johnny arrived at BOB", "*at ")

$string must equal BOB. Also if I do this:

$string = stripWithWildCard("Peter is at SUSAN", "*at ");

$string must be equal to SUSAN.

What is the shortest way to do this?

Upvotes: 0

Views: 6619

Answers (1)

Jon
Jon

Reputation: 437454

A regular expression. You substitute .* for * and replace with the empty string:

echo preg_replace('/.*at /', '', 'Johnny arrived at BOB');

Keep in mind that if the string "*at " is not hardcoded then you also need to quote any characters which have special meaning in regular expressions. So you would have:

$find = '*at ';
$find = preg_quote($find, '/');  // "/" is the delimiter used below
$find = str_replace('\*', '.*'); // preg_quote escaped that, unescape and convert

echo preg_replace('/'.$find.'/', '', $input);

Upvotes: 5

Related Questions