php 在字符串的每两个字符之间添加一个随机字符[已关闭]

tzdcorbm  于 2022-11-28  发布在  PHP
关注(0)|答案(2)|浏览(191)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

29天前关闭。
1小时前编辑并提交此帖子以供审阅。
Improve this question
如何将[A-Za-z0-9]/-中的随机字符每隔一个字符添加到字符串中?例如,input:

Hello_world!

输出:

H3e7l2l-o2_aWmocr9l/db!s

编辑:下面是我的尝试,但是没有标记为Here的行下面的一行,它抛出了错误Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in...。我猜这是因为$char的一个片段不是数组。在我添加了Here下面的一行以将字符串“转换”为数组之后,另一个错误出现了:'未捕获的类型错误:字符串重复():参数#1($string)必须是字符串类型,数组在...'
我不知道还有其他方法。

<?php
$string = "Hello_World!";
$length = strlen($string);
$string = str_split($string, 2);
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/-";

//Here 
$chars = (is_array($chars)) ? $chars : [$chars];

for($i = 0; $i < ($length / 2); $i++){
  $char = substr(str_shuffle(str_repeat($chars, 1)), 0, 1);
  $added = implode($string[$i], $char);
}

echo $string;

?>
tyg4sfes

tyg4sfes1#

$str = 'Hello_world!';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/-';
$result = array_reduce(str_split($str),
  fn($carry, $item)=>$carry.=$item.$chars[rand(0,strlen($chars)-1)], '');
print_r($result);

str_split将您的输入字符串拆分为字符,然后array_reduce将它们与添加的随机字符重新组合。

xxb16uws

xxb16uws2#

<?PHP
  $str =  "Hello World!";
  
  $new_string = '';
  for($i =0; $i < strlen($str); $i++){ // loop through the string
     $new_string .= $str[$i]; // add character to new string
     $new_string .= getRandomCharacter(); // add the random character to new string
  }
  echo $new_string;
  
  function getRandomCharacter(){
     $random_characters = 'abcdefghijklmnopqrstuvwxyz'
                 .'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                 .'0123456789!@#$%^&*()';
    $index= rand(0, (strlen($random_characters)- 1) ); // generates random character index from the given set.
    return $random_characters[$index];
  }
  
?>

相关问题