Php 函数在字符串中的三个字符后插入破折号?

Php 函数在字符串中的三个字符后插入破折号?,php,html,Php,Html,我在input=文本中有一个表单,用户输入一个类似123456的数字,我想将其更改为123-456 我如何在一定数量的字符后加破折号 我尝试了很多函数,但它们都想更改或重复一个字符,我不想更改任何东西,我只想在字符串中的三个字符后插入破折号 多谢各位 这是从用户那里获取数字的代码我想把这个数字放在一个函数中,在用户插入的三个字符后插入破折号 <tr> <td> <small>RIG CHARGE:</small> </td> <

我在input=文本中有一个表单,用户输入一个类似123456的数字,我想将其更改为123-456

我如何在一定数量的字符后加破折号

我尝试了很多函数,但它们都想更改或重复一个字符,我不想更改任何东西,我只想在字符串中的三个字符后插入破折号

多谢各位

这是从用户那里获取数字的代码我想把这个数字放在一个函数中,在用户插入的三个字符后插入破折号

<tr>
 <td> <small>RIG CHARGE:</small> </td>
 <td> <input type="text" name="rch" value="<?php echo $objWorksheet->getCellByColumnAndRow(6, 21)->getValue(); ?>"> </td>
</tr>

钻机费用:

通用字符串操作函数,即,足以处理以下问题:

$value = substr($value, 0, 3).'-'.substr($value, 3);

为每个可能的用例添加一个特殊的函数并不是真正明智的。

这些答案中的大多数都误解了这个问题。如果字符串是7个字符长,那么您的解决方案将不起作用

$string = "123456";
$insertion = "-";
$index = 3;
$result = substr_replace($string, $insertion, $index, 0);
echo $result;
$split = str_split($inputStr, 3);
implode('-', $split);

将每隔3个字符插入一个
-

在您可以找到的一百万种模式中:

implode('-', str_split($input, 3));

但是您可以使用basic
substr()

见鬼,为什么不多加一个代码段呢

preg_replace('/^(\d{3})(\d+)$/', '$1-$2', $number)
我知道,
$problems++
等等。

以下是答案-

$str='aaabbbccceeefffggghhh';
$ans=format($str);
echo $ans;

function format($str){
$output=''; 
for($i=0;$i<strlen($str);$i=$i+6){
$substr1=substr($str,$i,3);
$substr2=substr($str,$i+3,3);
$output.='-'.$substr1.'-'.$substr2; 
}
$output=substr($output,1,strlen($output));
$output=substr($output,0,strlen($output)-1);
return $output;
}
$str='aaabbbcceefffgghh';
$ans=格式($str);
echo$ans;
函数格式($str){
$output='';

对于($i=0;$i如果$value大于6个字符,该怎么办?我更喜欢这种解决方案:
内爆('-',stru-split($value,3));
@KevinHorst:如果
$value
大于6个字符,则在第3个字符后仍将正确插入一个破折号。而您建议的破折号不仅效率低得多,而且还会插入多个破折号。OP肯定没有指出这是预期的结果。您的解决方案:123456789->123-456789 my解决方案:123456789->123-456-789@KevinHorst:公平地说,这个问题还不清楚。这取决于OP真正想要什么。不清楚OP是想每n个字符插入一个字符还是在n个字符之后插入一个字符。+1表示另一个可能的解决方案…在重新阅读后,它确实显得有点模糊。不管怎样,现在都有解决方案了对于这两个问题:)我认为,这不是正确的答案,因为:123456789->123-456789 str_分裂/内爆的解决方案:123456789->123-456789->123-456-789谢谢你,我想投你一票。我的声誉不足以让你赢得最复杂解决方案的蛋糕。你能描述一下你对123456780的期望吗