php - 在字符串中搜索 URL,并为每个问题添加查询字符串
问题描述
我写了这个脚本来做到这一点,但有一个我无法弄清楚的问题:
$buffer = '<a href="http://wwww.domain.com">Domain1</a>';
$buffer .= '<a href="http://wwww.domain.com?id=2">Domain2</a>';
preg_match_all('/<a href="(.*?)"/s', $buffer, $matches);
$searches = array();
$replaces = array();
foreach($matches[1] as $link){
$contain = parse_url($link, PHP_URL_QUERY);
$symbol = $contain ? "&" : "?";
$new_link = $link . $symbol . "mode=testing";
$searches[] = $link;
$replaces[] = $new_link;
}
$newbuffer = str_replace($searches ,$replaces , $buffer);
var_dump($newbuffer);
输出:
<a href="http://wwww.domain.com?mode=testing">Domain1</a>
<a href="http://wwww.domain.com?mode=testing?id=2">Domain2</a>
将参数添加到每个链接的预期输出:
<a href="http://wwww.domain.com?mode=testing">Domain1</a>
<a href="http://wwww.domain.com?id=2&mode=testing">Domain2</a>
有什么帮助吗?
解决方案
问题来自:
$searches
包含:
array(2) {
[0]=>
string(24) ""http://wwww.domain.com""
[1]=>
string(29) ""http://wwww.domain.com?id=2""
}
$replaces
包含:
array(2) {
[0]=>
string(37) ""http://wwww.domain.com?mode=testing""
[1]=>
string(42) ""http://wwww.domain.com?id=2&mode=testing""
}
然后用ANDstr_replace
替换所有元素from$searches
到所有元素$replaces
_ _ _ _http://wwww.domain.com
http://wwww.domain.com?mode=testing
http://wwww.domain.com?id=2
http://wwww.domain.com?mode=testing?id=2
?mode=testing
domain.com
这是一个解决方案:
"
在两个数组中的链接周围添加。
$buffer = '<a href="http://wwww.domain.com">Domain1</a>';
$buffer .= '<a href="http://wwww.domain.com?id=2">Domain2</a>';
preg_match_all('/<a href="(.*?)"/s', $buffer, $matches);
$searches = array();
$replaces = array();
foreach($matches[1] as $link){
$contain = parse_url($link, PHP_URL_QUERY);
$symbol = $contain ? "&" : "?";
$new_link = $link . $symbol . "mode=testing";
$searches[] = '"' . $link . '"';
$replaces[] = '"' . $new_link . '"';
}
$newbuffer = str_replace($searches ,$replaces , $buffer);
var_dump($newbuffer);
输出:
<a href="http://wwww.domain.com?mode=testing">Domain1</a>
<a href="http://wwww.domain.com?id=2&mode=testing">Domain2</a>
推荐阅读
- testing - 我正在尝试在 using testcafe 中找到一个元素,但我无法这样做。请问有没有办法做到这一点?
- python - Pandas - iloc - 将值与下面的单元格进行比较
- javascript - ASP.Net MVC-如何使用 ViewBag 数组对象在列表项上动态创建单击事件监听器
- node.js - AWS Lambda:如何在 Dynamodb 中更新地图中的项目
- caching - 如何在 .NET Core 中检索内存缓存键列表?
- python - 如何在数据库中获取一个值并在 django 表单上显示
- react-native - 反应原生远程通知
- c++ - priority_queue 的仿函数和函数以及某种 C++
- android - 使用 Flow 进行多次改造调用
- python - 使用 pyodbc 过滤器 .in_(list) 出现“最大参数数”错误