首页 / 正则 / 正则表达式/通配符替换字符串PHP
正则表达式/通配符替换字符串PHP
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了正则表达式/通配符替换字符串PHP,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2044字,纯文字阅读大概需要3分钟。
内容图文
![正则表达式/通配符替换字符串PHP](/upload/InfoBanner/zyjiaocheng/785/c4a3ba4febf240fd898f0725d4b75e6c.jpg)
我有大量的文本被加载到标题中,其中包含此链接.
<link rel="canonical" href="could_be_anything_here_at_all" />
我想用一个新值替换它,但href根据页面改变意味着一个简单的str_replace是不可能的.
我已经看过使用preg_replace了,但是无法理解看似简单的问题.
$regex = '/(^<link rel="canonical")(\/>$)/';
$match = preg_match_all($regex, $content, $matches);
var_dump($matches);
> //开始和结束表达式?
>()表示必须匹配要返回的字符串的单独“表达式”?
> ^过滤以下列字符串开头的结果?
>结果以以下字符串结尾的$过滤器?
所以我正在寻找以< link rel =“canonical”开头并以/>结尾的字符串
我已经展示了我正在追求的步骤,以及我对它的刺痛.请帮我写,最后了解如何做.我真的很茫然.
解决方法:
你写的正则表达式遍布整个地方.让我们来看看这个模式:
无论发生什么,它都将以< link开头并以>< / link>结束.或/> (必须考虑那些讨厌的不尊重标准的网络海盗).你正在寻找rel参数,如果它有一个,它需要是规范的.
我们可以开始编写正则表达式:#< link([^>])(/> |>< / link>)#is.这将映射所有链接标记.然后,您可以使用简单的strpos调用来解析参数.
如果您确定rel =“canonical”将是链接标记的第一个参数,您可以将正则表达式进一步扩展为#< link rel =“canonical”href =“?'?([^”']) “?'?(/> |>< / link>)#is.这将按顺序映射它,如果您确定这将是订单,这很好.
按出场顺序:
除了>之外,[^>]匹配任何内容角色一次或多次
标志代表:不区分大小写,不要在换行符中断
“?’?匹配0或1”,后跟0或1′
如果还有其他不清楚的地方,请告诉我.
编辑:回答你的问题
> //开始和结束表达式?
他们被称为分隔符,他们“包围”表达. Perl正则表达式引擎允许设置关于表达式(i,s,g,b等)的标志,并且这些标志必须在表达式之外.他们追求分隔符 – 这是分隔符的要点.你可以使用你喜欢的任何角色 – 它将选择最远的两个重复角色.人们倾向于使用/由于JS使用单个字符串 – 我倾向于在PHP中使用#来清除因关闭HTML标记而产生的歧义.
>()表示必须匹配要返回的字符串的单独“表达式”?
()匹配一个子集,如果为匹配项指定变量,则允许您将其返回到结果中.正则表达式的每个部分都可以使用通配符& co,但只包含在()中的东西将在比赛中返回
> ^过滤以下列字符串开头的结果?
不. []范围之外的^将匹配以下列字符串句点开头的任何内容.在一条新的路线上,有效而不仅仅是“言语”.
>结果以以下字符串结尾的$过滤器?
与上面相同,只是“结束”而不是“开始”.
内容总结
以上是互联网集市为您收集整理的正则表达式/通配符替换字符串PHP全部内容,希望文章能够帮你解决正则表达式/通配符替换字符串PHP所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。