2010-04-30 3 views
1

Попытки заменить первые 12 цифр номера кредитной карты с крестиками в предсказуемом сгустке текста, который содержит строку:Easy Regex вопрос

Номер кредитной карты: 1234123412341234

Вот мой PHP функции:

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

Помощь?

ответ

1

Немой вопрос: вы назначаете возвращаемое значение обратно на $str?

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

Вот и все! Спасибо миллион. – Aaron

+0

Я тоже. Иногда это случается и со мной :( – 2010-04-30 19:40:53

+0

На самом деле KennyTM задал тот же вопрос. +1. везучий :) – publicRavi

2

Я не вижу, что случилось. Возможно, вы забыли назначить результат?

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

Кроме того, захват вокруг ([0-9]{12}) не требуется, если вам не нужно это.

+0

Причина, по которой я полагаю, что это потому, что она искала «номер кредитной карты: 1» 16 раз подряд, а не только цифру 16 раз подряд. Другими словами, он соответствовал всей схеме 16 раз. Проблема в том, что совпадения нет. :( – Aaron

+0

@Aaron: тогда у вас есть некорректная скобка. '{12}' применяется только к шаблону перед ним, то есть '[0-9]', а не всему шаблону, если вы не написали '/ (номер кредитной карты : [0-9]) {12}/'. – kennytm