我想在字符串和字符串處強制執行單個問號。在JavaScript中它可以很好地工作:如何使用preg_replace追加或替換尾隨問號?
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, '?'));
所有返回值等於「lolwut?」 PHP變種不工作那光滑:
$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";
輸出爲:
我在做什麼錯在這裏?
更新:
$(美元)斷言串
的端斷言是上下面或當前匹配點實際上不消耗任何字符之前的字符的測試。
是我的困惑在這裏,與preg_replace函數隱性的全球標誌一起,感謝salathe提供線索。 (你們應該投他的答案了,真的)
誰使用'7'作爲問號?7777 – kennytm 2010-07-20 08:30:05
@KennyTM:lolwut ??? !!! 11 – 2010-07-20 08:34:26