Ben de ve dize tek soru işareti zorlamak istiyorum. JavaScript mükemmel çalışıyor:
var re = /[?7!1]*$/;
document.write('lolwut'.replace(re, '?'));
document.write('lolwut?'.replace(re, '?'));
document.write('lolwut??'.replace(re, '?'));
document.write('lolwut???'.replace(re, '?'));
document.write('lolwut???!!!11'.replace(re, '?'));
All of returned values equals "lolwut?" PHP variant doesnt work that smooth:
$re = '/[?7!1]*$/';
echo preg_replace($re, '?', 'lolwut') . "\n";
echo preg_replace($re, '?', 'lolwut?') . "\n";
echo preg_replace($re, '?', 'lolwut??') . "\n";
echo preg_replace($re, '?', 'lolwut???') . "\n";
echo preg_replace($re, '?', 'lolwut???!!!11') . "\n";
çıktı:
lolwut?
lolwut??
lolwut??
lolwut??
lolwut??
Ben burada yanlış ne yapıyorum?
Güncelleme:
$ (Dollar) Assert end of string
An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters.
preg_replace örtük küresel bayrağı ile birlikte burada benim karışıklık, bir ipucu sağlamak için salathe sayesinde. (Siz gerçekten, onun cevabını kadar oy gerekmektedir)