php - 更改 preg_replace 网址
问题描述
对不起我的英文打字不好。
我要添加标签<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
到错误的网址
我想(preg_replace)找到
<link rel="canonical" href="/example1/example2/example3/example4" />
并更换
<link rel="canonical" href="example1/example2/example3/example4" /><meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
这是我的代码:
$body = preg_replace('# <link rel="canonical" href="/example/(.*?)/(.*?)/(.*?)" /> #is', ' <link rel="canonical" href="/example/$1/$2/$3" /><meta name="ROBOTS" content="NOINDEX, NOFOLLOW">', $body);
但是这段代码替换
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
到所有网址。
例如:
example.com/videos/1234
example.com/music/1234
example.com/forum
我只想查找并替换为 4 个 id 的网址 - 而不是 3 或 2 个 id
再次为我的英语打字错误感到抱歉
解决方案
在这种情况下,您不需要使用(.*?)
url 的每个术语。.*\/.*\/.*\/.*
检查它是否有 3 个斜线就足够了。然后将孔分组<link>
并替换为$1<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
. 您的preg_replace()应如下所示:
$body = preg_replace('(<link rel="canonical" href=".*\/.*\/.*\/.*" \/>?)', '$1<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">', $body);
一个测试正则表达式的好网站是regex101.com
推荐阅读
- android - Android Firebase 自动断开与服务器的连接
- ios - 节拍器。定时器、音乐和动画
- reactjs - 与 TypeScript 反应 - 类型 {...} 不可分配给类型“只读
” - javascript - Javascript:IE 的等效解构赋值
- reactjs - Safari & event.target.select()
- php - @php artisan package:discover 处理返回的自动加载转储后事件,错误代码为 255
- laravel - 在 laravel 中显示数据库中的多个图像
- xml - how to group XML without attributes
- javascript - 将 CSS 值存储在 JavaScript 变量中
- node.js - NodeJS + CloudSQL Postgres - 连接随机终止