2016-06-10 4 views
1

Ich möchte alle Wörter von einer Zeichenkette ersetzen, die mehr als 6 Ziffern hat.ersetzen Sie Wörter von der Zeichenkette, die mehr als 6 Stellen hat regex php

Beispiel:

‚mein Kontakt nicht ist (432) (323) (322). meine andere Nummer ist +1239343. ein anderer ist 343as32240' TO

:

‚mein Kontakt nicht heißt [removed]. meine andere Nummer ist [entfernt]. ein anderer ist [entfernt] '

Ich kenne Regex und Preg_replace. Brauchen Sie einfach die richtige Regex dafür.

+0

Gehe zu: https://www.regex101.com Ihre Eingabe setzen es in und schauen die Referenz und spielen damit ein bisschen herum. – Rizier123

+0

Ja, das ist meine Lieblings-Website. Ich habe versucht, aber diesmal kein Glück :( –

Antwort

5

Sie können diese Regex für die Suche verwenden:

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

und ersetzen durch [removed].

Breakup:

(?<=\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 

Code:

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

RegEx Demo

+1

vielen Dank. Lass mich versuchen :) –

+1

Nochmals vielen Dank. Es funktionierte :) –

Verwandte Themen