怎么指定要替换第几个字符串?

时间:2022-02-03 10:31:58
如:
当前字符串:
"a反对个地方a的感大概大师傅a似的但是a豆腐干似的a"
怎么指定把第2个a替换成b 把第4个a替换成c
求方法,求代码-_-!

24 个解决方案

#1


没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex}="`";
  
  $index2 = strpos($str,'a');
  $str{$index2} ='b';
  
  $index3 = strpos($str,'a');
  $str{$index3} = "`";
  
  $index4 = strpos($str,'a');
  $str{$index4} ='c';
 
  $str = str_replace('`','a',$str);
  echo $str;


#2


可以用正则
$preg= '/(.*?a.*?)a(.*?a.*a)/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

#3


引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex……

在问个数据库的事啊
比如我有10条数据删除最后2条后然后在添加数据主键值变成10了
怎么把记录删干净让他重新重第8条开始啊?
INSERT 插入不要啊,我要删干净

#4


括号弄错了
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

#5


$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return $res; 
}
echo preg_replace('/(a)/e', 'foo(\\1)', $str);

//output a反对个地方b的感大概大师傅c似的但是d豆腐干似的e

#6


引用 3 楼 weweidisid 的回复:
引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
header("content-type:text/html;charset=utf-8");
$str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$startIndex = strpos($str,'a');
$……

可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。

#7


上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return $res; 
}
echo preg_replace('/(a)/e', 'foo(\\1)', $str,2);//此处设置改变个数

//output a反对个地方b的感大概大师傅c似的但是d豆腐干似的e

#8


引用 6 楼 zt_king 的回复:
引用 3 楼 weweidisid 的回复:

引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
header("content-type:text/html;charset=utf-8");
$str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$startInd……

里面哪些是变量啊》?

#9



ALTER TABLE table_name AUTO_INCREMENT=n //小写是变量,table_name为表名,n为你想设置的起始值

#10


$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$ar = explode("a", $str);
$str = $ar[0];
for(var $i=1;$i<count($ar); $i++)
{
   $c = "a";
   if($i==1) $c="b";
   if($i==3) $c="c";
   $str.=$c.$ar[$i];
}

#11


引用 4 楼 hemuhan 的回复:
括号弄错了

PHP code
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

$1b$2c
你这是什么哦?

#12


引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex……

里面的a的个数不定量怎么写啊?

#13


引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
    static $i = 0;
    $t = range('a', 'z');
    $res = $t[$i];
    $i++;
    return $……

报错啊!!

Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\file.php(11) : regexp code on line 1

Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\file.php(11) : regexp code on line 1
a反对个地方b的感大概大师傅a似的但是a豆腐干似的a

#14


preg_replace很强大,结合正则可以实现任何替换。

#15


引用 13 楼 weweidisid 的回复:
引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return……



$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
    static $i = 0;
    $t = range('a', 'z');
    $res = $t[$i];
    $i++;
    return $res; 
}
echo preg_replace('/(a)/e', 'foo("\\1")', $str,2);//此处设置改变个数,此处加变量引号.

#16


引用 15 楼 zt_king 的回复:
引用 13 楼 weweidisid 的回复:

引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$r……


昨天睡觉太早了,都没看到这么多回复了。还想到一个explode的,看了下,跟十楼差不多。

<?php
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$ar = explode("a", $str);
$str = $ar[0];
for($i=1;$i<count($ar);$i++)
{
   $char = ($i==2?'b':($i==4?'c':'a'));
   $str.=$char.$ar[$i];
}
echo $str;


#17


学习了

#18


$s = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";

function foo($r) {
  global $num;
  $num++;
  if($num == 2) return 'b';
  if($num == 4) return 'c';
  return $r[0];
}

echo preg_replace_callback('/a/', 'foo', $s);
a反对个地方b的感大概大师傅a似的但是c豆腐干似的a

#19


再来个另类的

$val = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';
preg_match_all('/a/',$val,$matchs);
for($i = 1,$m = 1 ; $i <= count($matchs[0]) ; $i++){
if($i==2){
$val = preg_replace('/a/','%'.(++$m).'$s',$val,1);
}elseif($i==4){
$val = preg_replace('/a/','%'.(++$m).'$s',$val,1);
}else{
$val = preg_replace('/a/','%1$s',$val,1);
}
}
echo $val,"<br />\n";
printf($val,'a','b','c');

#20



function user_str_replace($s, $p){
$end = strrpos($s, 'a');
if($end === false){
return $s;
}
$count = 0;
$index = 0;
while(($index = strpos($s, 'a', $index)) !== false){
++$count;
++$index;
foreach($p as $k => $v){
if($count == $k){
list($replace, $txt) = each($v);
$s = substr($s, 0, $index - 1) . $txt . substr($s, $index + strlen($replace) - 1);
// goto P;
}
}
// P:
}
return $s;
}

//$s = 'la反对个地方a的感大概大师傅a似的但是a豆腐干似的a';
$s = '----a----a----a----a----a----';
$p = array(
2 => array('a' => 'b'),
4 => array('a' => 'c'),
);
echo user_str_replace($s, $p);

#21


引用 20 楼 kyzy_yy_pm 的回复:
PHP code

function user_str_replace($s, $p){
    $end = strrpos($s, 'a');
    if($end === false){
        return $s;
    }
    $count = 0;
    $index = 0;
    while(($index = strpos($s, 'a', ……

这个很强大!!
在字符串里a不确定个数的情况下,如果我要改变倒数第1,第2个要怎么写呢,?

#22


引用 21 楼 weweidisid 的回复:
引用 20 楼 kyzy_yy_pm 的回复:
PHP code

function user_str_replace($s, $p){
$end = strrpos($s, 'a');
if($end === false){
return $s;
}
$count = 0;
$index = 0;
while(($index = strpos($s, 'a', ……

……

反转字符串

#23


引用 4 楼 hemuhan 的回复:
括号弄错了
PHP code
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

你的这个不行

<?php
header("content-type:text/html;charset=utf-8");
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$replacement = "\$1b\$2c";
print preg_replace($preg, $replacement, $str);

#24


很多很多方法。

#1


没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex}="`";
  
  $index2 = strpos($str,'a');
  $str{$index2} ='b';
  
  $index3 = strpos($str,'a');
  $str{$index3} = "`";
  
  $index4 = strpos($str,'a');
  $str{$index4} ='c';
 
  $str = str_replace('`','a',$str);
  echo $str;


#2


可以用正则
$preg= '/(.*?a.*?)a(.*?a.*a)/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

#3


引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex……

在问个数据库的事啊
比如我有10条数据删除最后2条后然后在添加数据主键值变成10了
怎么把记录删干净让他重新重第8条开始啊?
INSERT 插入不要啊,我要删干净

#4


括号弄错了
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

#5


$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return $res; 
}
echo preg_replace('/(a)/e', 'foo(\\1)', $str);

//output a反对个地方b的感大概大师傅c似的但是d豆腐干似的e

#6


引用 3 楼 weweidisid 的回复:
引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
header("content-type:text/html;charset=utf-8");
$str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$startIndex = strpos($str,'a');
$……

可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。

#7


上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return $res; 
}
echo preg_replace('/(a)/e', 'foo(\\1)', $str,2);//此处设置改变个数

//output a反对个地方b的感大概大师傅c似的但是d豆腐干似的e

#8


引用 6 楼 zt_king 的回复:
引用 3 楼 weweidisid 的回复:

引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
header("content-type:text/html;charset=utf-8");
$str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$startInd……

里面哪些是变量啊》?

#9



ALTER TABLE table_name AUTO_INCREMENT=n //小写是变量,table_name为表名,n为你想设置的起始值

#10


$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$ar = explode("a", $str);
$str = $ar[0];
for(var $i=1;$i<count($ar); $i++)
{
   $c = "a";
   if($i==1) $c="b";
   if($i==3) $c="c";
   $str.=$c.$ar[$i];
}

#11


引用 4 楼 hemuhan 的回复:
括号弄错了

PHP code
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

$1b$2c
你这是什么哦?

#12


引用 1 楼 ohmygirl 的回复:
没有现成的函数,可以自己写。
随手写个简单的,没找到更好的。
1.

PHP code
<?php
  header("content-type:text/html;charset=utf-8");
  $str = "a正对个地方a的感大概大师傅a似的但是a豆腐干似的a";
  $startIndex = strpos($str,'a');
  $str{$startIndex……

里面的a的个数不定量怎么写啊?

#13


引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
    static $i = 0;
    $t = range('a', 'z');
    $res = $t[$i];
    $i++;
    return $……

报错啊!!

Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\file.php(11) : regexp code on line 1

Notice: Use of undefined constant a - assumed 'a' in E:\wamp\www\file.php(11) : regexp code on line 1
a反对个地方b的感大概大师傅a似的但是a豆腐干似的a

#14


preg_replace很强大,结合正则可以实现任何替换。

#15


引用 13 楼 weweidisid 的回复:
引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$res = $t[$i];
$i++;
return……



$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
    static $i = 0;
    $t = range('a', 'z');
    $res = $t[$i];
    $i++;
    return $res; 
}
echo preg_replace('/(a)/e', 'foo("\\1")', $str,2);//此处设置改变个数,此处加变量引号.

#16


引用 15 楼 zt_king 的回复:
引用 13 楼 weweidisid 的回复:

引用 7 楼 zt_king 的回复:
上面没将代码格式化,看着别扭的很,另外加一个参数更符合LZ个性。

PHP code

$str = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';

function foo($char){
static $i = 0;
$t = range('a', 'z');
$r……


昨天睡觉太早了,都没看到这么多回复了。还想到一个explode的,看了下,跟十楼差不多。

<?php
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$ar = explode("a", $str);
$str = $ar[0];
for($i=1;$i<count($ar);$i++)
{
   $char = ($i==2?'b':($i==4?'c':'a'));
   $str.=$char.$ar[$i];
}
echo $str;


#17


学习了

#18


$s = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";

function foo($r) {
  global $num;
  $num++;
  if($num == 2) return 'b';
  if($num == 4) return 'c';
  return $r[0];
}

echo preg_replace_callback('/a/', 'foo', $s);
a反对个地方b的感大概大师傅a似的但是c豆腐干似的a

#19


再来个另类的

$val = 'a反对个地方a的感大概大师傅a似的但是a豆腐干似的a';
preg_match_all('/a/',$val,$matchs);
for($i = 1,$m = 1 ; $i <= count($matchs[0]) ; $i++){
if($i==2){
$val = preg_replace('/a/','%'.(++$m).'$s',$val,1);
}elseif($i==4){
$val = preg_replace('/a/','%'.(++$m).'$s',$val,1);
}else{
$val = preg_replace('/a/','%1$s',$val,1);
}
}
echo $val,"<br />\n";
printf($val,'a','b','c');

#20



function user_str_replace($s, $p){
$end = strrpos($s, 'a');
if($end === false){
return $s;
}
$count = 0;
$index = 0;
while(($index = strpos($s, 'a', $index)) !== false){
++$count;
++$index;
foreach($p as $k => $v){
if($count == $k){
list($replace, $txt) = each($v);
$s = substr($s, 0, $index - 1) . $txt . substr($s, $index + strlen($replace) - 1);
// goto P;
}
}
// P:
}
return $s;
}

//$s = 'la反对个地方a的感大概大师傅a似的但是a豆腐干似的a';
$s = '----a----a----a----a----a----';
$p = array(
2 => array('a' => 'b'),
4 => array('a' => 'c'),
);
echo user_str_replace($s, $p);

#21


引用 20 楼 kyzy_yy_pm 的回复:
PHP code

function user_str_replace($s, $p){
    $end = strrpos($s, 'a');
    if($end === false){
        return $s;
    }
    $count = 0;
    $index = 0;
    while(($index = strpos($s, 'a', ……

这个很强大!!
在字符串里a不确定个数的情况下,如果我要改变倒数第1,第2个要怎么写呢,?

#22


引用 21 楼 weweidisid 的回复:
引用 20 楼 kyzy_yy_pm 的回复:
PHP code

function user_str_replace($s, $p){
$end = strrpos($s, 'a');
if($end === false){
return $s;
}
$count = 0;
$index = 0;
while(($index = strpos($s, 'a', ……

……

反转字符串

#23


引用 4 楼 hemuhan 的回复:
括号弄错了
PHP code
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
preg_replace($preg,$1b$2c,$str);
echo $str;

你的这个不行

<?php
header("content-type:text/html;charset=utf-8");
$str = "a反对个地方a的感大概大师傅a似的但是a豆腐干似的a";
$preg= '/(.*?a.*?)a(.*?a.*?)a/';
$replacement = "\$1b\$2c";
print preg_replace($preg, $replacement, $str);

#24


很多很多方法。