问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP如何实现多表联查并且将特定标签的内容替换成别的

发布网友 发布时间:2022-04-06 00:33

我来回答

4个回答

懂视网 时间:2022-04-06 04:54

在php中可以使用正则表达式“preg_replace ( $pattern , $replacement , $subject , $limit , $count)”实现查找替换。

推荐:《PHP视频教程》

php 正则搜索和替换 preg_replace

preg_replace — 执行一个正则表达式的搜索和替换

方法说明:

preg_replace ( $pattern , $replacement , $subject , $limit , $count)

搜索subject中匹配pattern的部分, 以replacement进行替换。

$limit , $count 参数可有可无

limit : 每个模式在每个subject上进行替换的最大次数。默认是 -1(无限)。

count : 如果指定,将会被填充为完成的替换次数。

返回值 :

如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。

如果匹配被查找到,替换后的subject被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL 。

实例1:

<?php
$PIWIK_API = 'filter_offset={offset}&period={period}&date={date}';
$patterns = array(
 '/{offset}/',
 '/{period}/',
 '/{date}/'
);
$replacements = array(
 33,
 'day',
 '216-11-11'
);
$url = preg_replace($patterns, $replacements, $PIWIK_API);
//结果: $url = "filter_offset=33&period=day&date=216-11-11"

实例2:

<?php
$PIWIK_API = array(
 'filter_offset' => '{offset}',
 'period' => '{period}',
 'date' => '{date}'
);
$patterns = array(
 '/{offset}/',
 '/{period}/',
 '/{date}/'
);
$replacements = array(
 33,
 'day',
 '216-11-11'
);
$url = preg_replace($patterns, $replacements, $PIWIK_API);
//结果: 
/*
$url = array(3) {
 ["filter_offset"]=>
 string(2) "33"
 ["period"]=>
 string(3) "day"
 ["date"]=>
 string(9) "216-11-11"
}
*/

热心网友 时间:2022-04-06 02:02

先查询出表a中question_detial字段,再通过php正则匹配获取标签[attach]1[/attach]中的ID,通过该ID查询表b,获取到file_location字段,然后通过php(str_replace)替换掉question_detial中的标签[attach]1[/attach]

$sql = 'select * from `表A` where 条件';
$res = mysql_query($sql);
$data = mysql_fetch_assoc($res);
$question_detial = $data['question_detial'];
preg_match_all('/\[attach\]([0-9]*)\[\/attach\]/',$question_detial,$match);
if(isset($match[1]) && $match[1]){
$str_search = null;
$str_replace = null;
foreach($match[1] as $key => $val){
$str_search[$key] = '[attach]'.$val.'[/attach]';
$str_replace[$key] = '';
$sql_b = "select file_location from `表B` where id=".$val;
$res_b = mysql_query($sql_b);
$row_b = mysql_fetch_assoc($res_b);
$str_replace[$key] = '<img src="'.$row_b['file_location'].'" />';
}
$data['question_detial'] = str_replace($str_search,$str_replace,$question_detial);
}

print_r($data);

追问大神,您的这个方法为什么只能替换一张图片,对于多张图片的只替换最后一张

追答$sql_b = "select file_location from `表B` where id=".$key;
这行代码写错了,应该是
$sql_b = "select file_location from `表B` where id=".$val;
答案已经改过来了

热心网友 时间:2022-04-06 03:20

先查询出表a中question_detial字段,再通过php正则匹配获取标签[attach]1[/attach]中的ID,通过该ID查询表b,获取到file_location字段,然后通过php(str_replace)替换掉question_detial中的标签[attach]1[/attach]

热心网友 时间:2022-04-06 04:55

太难了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航用电脑软件哪个好导航软件哪个最准确 我要地图网使用我要地图网轻松查询地图信息 装配行业MES系统四大车间管理活动介绍 王者荣耀S14狂铁怎么玩_王者荣耀S14狂铁出装铭文推荐 沅陵县有姓文的分布在那个地方, 汨罗一中在省排名 汨罗高中有哪些? 湖南省岳阳市汨罗有哪些高中 新生儿脊膜膨出后遗症 在深圳硬脊膜膨出手术后大小便失禁怎么办? 如何在PHP中使用正则表达式进行查找替换 php查询style里面的内容并进行替换如何弄? 用php header() 实现文件下载,出现问题 php文件下载问题 最近下载文件总是出现forum.php,无法下载,应如何解决 为什么我用迅雷下载时,总是下载到一个后缀为PHP的文件,大小只有1KB,而不是想要的目标文件! php header下载大文件问题 php关于文件上传大小的问题及文件下载问题 本地测试网站无法下载或访问23MB以上的文件,使用phpstudy搭建 如何在本地端实现php对大文件的断点续下载? 为什么在很多网站下载的文件都只有4.5或7KB大,都是PHP文件,打开的话它提示文件损坏 为什么迅雷无法下载php类型的文件? 怎么优化php因为下载导致负载过大 如何用php 下载比较大的文件 - 技术问答 为什么我下载不了?全是php文件? php 下载文档是否有限制, 超过2000条数据不能下载了。 PHP下载限制问题 用PHP怎么实现伪静态页面+多条件查询 thinkphp或php按条件选择查询实现思路或实例 thinkphp如何按条件查询同表中的多条数据! php正则替换字符串 php 如何正则替换 php 正则匹配 怎么样可以实现完全匹配替换? PHP批量替换 php正则表达式 替换问题 PHP正则表达式 替换 PHP正则表达式如何替换掉某字 PHP正则表达式如何替换像这样的案例的 求个PHP简单的正则替换。 请问:php中如何用正则式查找字符串中是否含有某个字符,如何含有则替换为空 【PHP】怎样用正则表达式取【】中括号内的内容并替换 PHP如何利用正则表达式匹配替换以下类型 关于PHP正则替换 php正则替换怎么写 PHP正则替换 yii框架怎么获取服务器的全路径 yii里 怎么动态获取目录文件夹下的图片 想在虚拟主机安装YII,请高人指点 yii2中怎么引用select2组件 yii app目录指的是什么 如何使用yii2开发