2016-06-10 15 views
1

Я хочу заменить все слова из строки, содержащей более 6 цифр.заменить слова из строки, содержащей более 6 цифр regex php

Пример:

«мой контакт не есть (432) (323) (322). мой другой номер +1239343. другой является 343as32240'

К:

«мой контакт не есть [не удалены]. мой другой номер [удален]. другой - [удален] '

Я знаю регулярное выражение и preg_replace. Для этого просто нужно правильное регулярное выражение.

+0

Перейти к: https://www.regex101.com поставить вход туда и посмотреть на ссылку и поиграть с ним немного. – Rizier123

+0

Да, это мой любимый сайт. Я пробовал там, но на этот раз не повезло :( –

ответ

5

Вы можете использовать регулярные выражения для поиска:

(?<=\h|^)(?:[^\h\d]*\d){6}\S* 

и заменить [removed].

Распад:

(?<=\h|^)  # loookbehind to assert previous position is line start or whitespace 
(?:   # start of non capturing group 
    [^\h\d]*\d # 0 or more non-space and non-digits followed by 1 digit 
)    # end of non capturing group 
{6}   # match 6 of this group 
\S*   # followed by 0 or more non-space characters 

Код:

$result = preg_replace('/(?<=\h|^)(?:[^\h\d]*\d){6}\S*/', '[removed]', $str); 

RegEx Demo

+1

Большое спасибо. Позвольте мне попробовать :) –

+1

Еще раз спасибо. Это сработало :) –