In PHP, when we want to replace specified characters in a string, we usually replace them all at once, such as the str_replace function, but sometimes we only want to replace the first occurrence, such as replacing keywords in an article. This cannot appear if there are 100 of them. 100 times, I just want to limit it a few times. Let me introduce to you how to achieve it.
Example
$str='This is a string. I only replace ABC once and I don’t replace the following ABC. Is there any way to achieve this? ';
Replace the first abc with xyz. Since the string to be replaced is fixed, many people think of using the str_replace() function to see if the use of this function is what we want
str_replace( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
I accidentally thought that was what we wanted. The last parameter is to return the total number of replacements. It is a reference variable, not what I want to specify how many times it will be replaced, so use str_replace( ) is not possible
preg_replace() can be implemented, but it’s a pity that regular expressions are used,
The code is as follows | Copy code | ||||
echo $str;
|
Display email as starting from the first 2 digits of @ (inclusive) and hiding 4 digits forward
代码如下 | 复制代码 |
function show_email_2($string){ 有没有不用正则的,嗯可以这样 $replace='xyz'; |
The code is as follows | Copy code |
function show_email_2($string){ $first = strpos($string, '@'); //var_dump($first); if($first==1){ $string = '****'.$string; } If($first>1 && $first<=5){ $string = substr_replace($string,'****',0,$first-1); } if($first>5){ $string = substr_replace($string,'****',$first-5,4); } var_dump($string); return $string; } //show_email_2('22@163.com'); //Output-->****2@163.com //show_email_2('22@22.com'); //Output-->****2@22.com Show_email_2('6123456@163.com'); //Output-->61****6@163.com Is there any way to use regular expressions? Yes, it can be like this $replace='xyz'; if(($position=strpos($str,$replace))!==false){ $leng=strlen($replace); $str=substr_replace($str,'abc',$position,$leng); } echo $str; |
If I want to replace to a specified number of times, please refer to the following method
The code is as follows
|
Copy code
|
||||
/* |
return rtrim($result_str,$word);
}
$text='hello world hello pig hello cat hello dog hello small boy';
$word='hello';
$cword='good-bye';
echo changeNstr($text,$word,$cword,3);
//Output: hello world hello pig good-bye cat hello dog hello small boy
?>