Aaron
Aaron

Reputation: 732

Does preg_replace() modify by reference or return a value?

I'm trying to replace the first 12 digits of credit card numbers with X's in a predictable blob of text that contains the string:

Credit Card Number: 1234123412341234

Here's my PHP function:

preg_replace('/Credit Card Number: ([0-9]{12})/','Credit Card Number: XXXXXXXXXXXX',$str);

The problem is that the input string is not be affected.

Upvotes: 1

Views: 514

Answers (2)

publicRavi
publicRavi

Reputation: 2763

Dumb question: you are assigning the returned value back to $str right?

$str = preg_replace('/(Credit Card Number: [0-9]{12}/','Credit Card Number: XXXXXXXXXXXX',$str);

Upvotes: 1

kennytm
kennytm

Reputation: 523344

I don't see what's wrong. Perhaps you forgot to assign the result?

$str = preg_replace('/Credit Card Number: [0-9]{12}/','Credit Card Number: XXXXXXXXXXXX',$str);

Also, the capturing around ([0-9]{12}) is unnecessary if you don't need it.

Upvotes: 2

Related Questions