在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP/ php用對(duì)應(yīng)的文字去替換文章原來(lái)的文字

php用對(duì)應(yīng)的文字去替換文章原來(lái)的文字

<?php
$newword = "
直達(dá):通往
小:大
";
$str_txt = "這是一條直達(dá)美好殿堂的小道。"

?>

要求:用php代碼實(shí)現(xiàn)“通往”替換文章中的“直達(dá)”,用“大”替換文章中的“小”字。其中變量$newword是多行文本框提交過(guò)來(lái)的,每行一組替換文字。

回答
編輯回答
久不遇

1 <?php
2 $newword = "
3 直達(dá):通往
4 小:大
5 ";
6 $str_txt = "這是一條直達(dá)美好殿堂的小道。";
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是支持批量替換的。

2018年1月14日 11:15
編輯回答
念初

用的方法比較笨。

<?php
$newword = "
直達(dá):通往
小:大
";
$str_txt = "這是一條直達(dá)美好殿堂的小道。";

# 根據(jù)換行符拆分
$keyword_list = trim($newword);
$keyword_arr = explode("\n", $keyword_list);

# 構(gòu)建替換數(shù)組
$replace_arr = [];
$temp = [];
foreach($keyword_arr as $k => $v) {
    # 分割放入替換數(shù)組
    $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);

運(yùn)行輸出如下:

# fhy at Centos7 in ~/myphp [14:55:16]
→ php replace.php 
string(42) "這是一條通往美好殿堂的大道。"
(venv) 
2018年5月1日 01:17
編輯回答
薄荷糖
<?php
$newword = "
直達(dá):通往
小:大
";
$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 = "這是一條直達(dá)美好殿堂的小道。";
echo preg_replace($patter,$need,$str_txt);

圖片描述

2018年8月19日 10:44