为了账号安全,请及时绑定邮箱和手机立即绑定

php用对应的文字去替换文章原来的文字

php用对应的文字去替换文章原来的文字

PHP
万千封印 2019-03-17 23:44:11
<?php $newword = " 直达:通往 小:大 "; $str_txt = "这是一条直达美好殿堂的小道。" ?> 要求:用php代码实现“通往”替换文章中的“直达”,用“大”替换文章中的“小”字。其中变量$newword是多行文本框提交过来的,每行一组替换文字。
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

<?php
$newword = "
直达:通往
小:大
";
$newword = explode(PHP_EOL,trim($newword));
$patter = $need = array();
foreach ($newword as $key => $value) {
    $tmp = explode(':',$value);
    $patter[] = '/'.$tmp[0].'/';
    $need[] = $tmp[1];
}
$str_txt = "这是一条直达美好殿堂的小道。";
echo preg_replace($patter,$need,$str_txt);

https://img1.sycdn.imooc.com//5c8f5ba70001f48d08000498.jpg

查看完整回答
反对 回复 2019-03-18
?
青春有我

TA贡献1784条经验 获得超8个赞

用的方法比较笨。

<?php
$newword = "
直达:通往
小:大
";
$str_txt = "这是一条直达美好殿堂的小道。";

# 根据换行符拆分
$keyword_list = trim($newword);
$keyword_arr = explode("\n", $keyword_list);

# 构建替换数组
$replace_arr = [];
$temp = [];
foreach($keyword_arr as $k => $v) {
    # 分割放入替换数组
    $temp = explode(':', $v);
    $replace_arr[ $temp[0] ] = $temp[1];
}

# 替换文字
foreach($replace_arr as $k => $v) {
    $str_txt = str_replace($k, $v, $str_txt);
}
var_dump($str_txt);

运行输出如下:

# fhy at Centos7 in ~/myphp [14:55:16]
→ php replace.php 
string(42) "这是一条通往美好殿堂的大道。"
(venv) 
查看完整回答
反对 回复 2019-03-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

1 <?php
2 $newword = "
3 直达:通往
4 小:大
5 ";
6 $str_txt = "这是一条直达美好殿堂的小道。";
7 $pairs = preg_split("/[:".PHP_EOL."]/", trim($newword));
8 $i = 0;
9 while($i < count($pairs)) {
10 list($ori[], $tar[]) = [$pairs[$i++], $pairs[$i++]];
11 }
12 var_dump(str_replace($ori, $tar, $str_txt));
输出:
string(42) "这是一条通往美好殿堂的大道。"
str_replace是支持批量替换的。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 768 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信