我有一个包含字符串的数组,其中一些字符串包含点('。')。
我必须重申。我不想用str_replace做这件事。
所以,我需要用下划线替换那些点。
例如:
for($data as $key=>$value){
print_r($value);
}
让我们说输出如何:
'Hello. I have two dots. Please replace them!'
我们希望得到的是:
'Hello_ I have two dots_ Please replace them!'
提前致谢
答案 0 :(得分:7)
这是一个代码高手还是什么?
无论如何这是 a 解决方案:
$text='Hello. I have two dots. Please replace them!';
echo IHateStrReplace(".","_",$text);
function IHateStrReplace($replace_from,$replace_to,$input)
{
$result="";
for($i=0;$i<strlen($input);$i++)
{
$result.= ($input[$i]==$replace_from)?$replace_to:$input[$i];
}
return $result;
}
答案 1 :(得分:3)
怎么样
$original_string = 'Hello. I have two dots. Please replace them!';
$exploded_string = explode('.' , $original_string);
$new_string = implode('_' , $exploded_string);
答案 2 :(得分:2)
echo strtr('Hello. I have two dots. Please replace them!', '.', '_');
String Translate对字符串进行逐字节转换。
答案 3 :(得分:0)
您可以使用preg_replace。 http://nl3.php.net/preg_replace
$var = 'Hello. I have two dots. Please replace them!';
echo preg_replace('#\.#', '_', $var);
答案 4 :(得分:0)
正则表达式替换单个字符有点过分,但如果你必须避免str_replace()
,那么这样就可以了:
foreach($data as $key => $value){
$data[$key] = preg_replace('/\./', '_', $value);
}
print_r($data);
答案 5 :(得分:0)
对于未来的搜索者,strtr()
(字符串翻译)会翻译单个字符,因此将其与array_map相结合可以获得一个简洁的解决方案:
// Push every item in the array through strtr()
$array = array_map('strtr', $array, ['.', '_']);
但是,在基准测试中,我发现strtr()
比str_replace()
慢,所以我倾向于使用它。