Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][php / regex] Ukrywanie znaków z podanego stringu
Forum PHP.pl > Forum > Przedszkole
sowi
Potrzebuję regexa, który z podanego stringa ukryje (zamieni na x) wszystkie znaki poza pierwszymi i ostatnimi dwoma - np:

z ABC123456
na ABxxxxx56

zrobiłem następujący:

  1. $s = 'ABC123456';
  2. preg_replace('/^(..).+(..)$/', '$1xxxxxx$2', $s);


I działa ok, z jednym ale - jak string ma więcej niż 9 znaków to oczywiście się skraca. A ja bym chciał, żeby w sytuacji gdy mam ABCDEFG123456789 też wyszło ABxxxxxxxxxxxx89
Kloc
Spróbuj może z substr() i strlen()

Kod
$s = 'ABC123456';

$dl = strlen($s) - 2;
$dl1= -.$dl // $dl ma być ujemna !

$sub1 = substr ($s, 0, 1);
$sub2 = substr($s, $dl1, 0)
preg_replace ( '/^(..).
+(..)$/' , '/^$sub1(.+)$sub2$/' ,
$s );
_Borys_
  1. <?php
  2.  
  3. $s = 'ABCDEFG123456789';
  4. echo preg_replace_callback('/^(..)(.+)(..)$/', function ($m)
  5. {
  6. return $m[1] . str_repeat('x', strlen($m[2])) . $m[3];
  7. }
  8. , $s);
  9.  
  10. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.