Вы создали только один случайный уникальный идентификатор с вашим вызовом на
$new= generate_string($permitted_chars, 30);
Это значение $new
теперь будет использоваться при любых заменах, которые вы делаете. Таким образом, очевидно, что это то же самое для каждой строки.
Вы должны позвонить generateString()
для каждой строки в отдельности. Вы можете использовать preg_replace_callback()
и предоставить функцию, которая генерирует новое значение для каждой вашей строки.
// example data
$data = "1|http://www.example.org
5|http://www.example.org/again
30|http://www.example.org/another_one";
$old = '/^[a-zA-Z0-9]+/m';
$newdata = preg_replace_callback(
$old, // the regex
function($matches) use ($permitted_chars) { // the magic anonymous function
return generate_string($permitted_chars, 30);
},
$data); // the original data
echo $newdata;
Это может генерировать вывод, подобный следующему:
5ZcOpJIXO7Q0YNQWRlTxc16LZSlrqy|http://www.example.org
JeoGTQz6HYSZcF3iUrm2YS66AXXDH0|http://www.example.org/again
Wp4UIdv24IK6SxuUr9m9R2TuO4Cjzb|http://www.example.org/another_one