2011-05-29 64 views

回答

4

這是你想要的正則表達式:

$string='asdfbASDF1234'; 
echo $string."\n"; 
echo preg_replace('/(?!^.?).(?!.{0}$)/', '*', $string); 
+0

此答案被標記爲正確,因爲它直接與問題相關。但丹尼斯提供的備選答案也是一個不錯的選擇。 – 2011-05-29 14:57:23

+0

這種方式,它取代了所有,但第一次給我,就像這樣:/(?!.??))((?!.?$)/保持最後一個 – user109764 2016-01-06 15:54:04

5

爲什麼不使用str_repeat()

$length = strlen($in); 
$out = $in[0] . str_repeat('*', $length - 2) . $in[$length-1]; 
+0

+1幾百倍比我快,給定足夠長的字符串。 – lonesomeday 2011-05-29 10:59:44

+0

從我這裏得到+1這樣一個美妙的邏輯。 – 2011-05-29 14:57:49

+0

確保len應該至少有2個字符。 @denis – marlo 2016-12-13 05:09:24

-1

任何人尋找掩蔽所有字母,但首先給出一句話每一個字:

function maskele($in){ 
$kelimeler=explode(" ",$in); 
$isim=null; 
foreach ($kelimeler as $kelime){ 
$length = strlen($kelime); 
$out = $kelime[0] . str_repeat('*', $length - 1) ; 
$isim.=$out. " "; 
} 
return $isim; 

} 
+0

這不是問題的問題,這是什麼問題已經有**和**不想要**。 – Ajean 2017-12-15 20:56:03

相關問題