发布网友 发布时间:2022-04-24 14:54
共3个回答
热心网友 时间:2022-04-06 01:53
function replace($str,$index,$s){
//参数定义:
//$str 原字符串
//$index 要替换的位置(第一个"-"前面的位置为0,最后一个"-"后面的位置等于减号数量)
//$s 要替换的内容
$str=rtrim(rtrim($str,'html'),'.');
$arr=explode('-',$str,14);//如果是前面固定13个减号,可以加一个参数14
if($index>=count($arr)){
$arr[count($arr)-1]=$s;
}else if($index<0){
$arr[0]=$s;
}else{
$arr[$index]=$s;
}
return (implode('-', $arr).'.html');
}
$string='21--------43-----哈啊.html';
$newStr=replace($string,0,'aaa');//第1个减号前面的位置替换为aaa
echo $newStr . '<br>';
$newStr=replace($newStr,2,'bbb');//第2个减号后面的位置替换为bbb
echo $newStr . '<br>';
$newStr=replace($newStr,8,'ccc');//第8个减号后面的位置替换为ccc
echo $newStr;
注意:原字符串结尾部分不能连续两个"html"或者连续两个"."连着
如果原字符串在替换的时候不加".html"就没有这个*了,就像这样
function replace($str,$index,$s){应该能用吧
追问可以用,谢谢!但是突然发现一个问题,因为最后面的“哈啊”是中文的,里面有可能有减号,怎么才能控制到了13个减号的后面的都替换呢?因为前面13个减号都是固定的,后面的是中文+.html,可能包含减号
你看我这样修改正常不,怕后面用了整个程序出错
热心网友 时间:2022-04-06 03:11
$str = '21--------43-----哈啊.html';
$arr = explode('-', $str);
$j = 0;
$new = array();
foreach ($arr as $key => $val) {
$new[] = $val;
if ($val == '') {
++ $j;
if ($j == 1) {
$new[$key - 1] = 'aaa';
} elseif ($j == 3) {
$new[$key - 1] = 'bbb';
} elseif ($j == 8) {
$new[$key - 1] = 'ccc';
}
}
}
var_mp(implode('-', $new));die;
试试看行不
热心网友 时间:2022-04-06 04:46
substr_replace