我有"X los(2) - XYZ tres"
如何找到所有大写字母和单词并用随机数替换它们?
从第一个字符串开始,我应该"2 los(2) - 6 tres"
或"9 los(2) - 5 tres"
我的意思是一个UPPER字应该变成一个数字。
答案 0 :(得分:3)
我就是这样做的。
使用正则表达式查找大写字符组,并用0
和9
之间的随机数替换它们(十进制系统中的所有单个数字)。
$str = preg_replace_callback('/[A-Z]+/', function() {
return rand(0, 9);
}, $str);
答案 1 :(得分:1)
您可以使用preg_replace_callback查找大写字母并将其替换为随机数。
$text = "X los(2) - XYZ tres";
// the callback function
function replace_with_random($matches)
{
return rand(0,9);
}
//perform the replacement
$text= preg_replace_callback(
"/[A-Z]+/",
"replace_with_random",
$text);
回调可以检查匹配的文本以执行比随机更精细的替换 - 您会在$matches[0]
答案 2 :(得分:1)
要兼容unicode,请使用unicode属性\p{Lu}
,表示任何语言的任何大写字母:
$str = preg_replace_callback('/\p{Lu}+/', function() {
return rand(0, 9);
}, $str);
答案 3 :(得分:0)
试试这个
preg_replace_callback('/([A-Z]+)/', function(){
return mt_rand(0, 9);
}, "X los(2) - XYZ tres");