The*_*ner 5 php regex preg-replace
我的xml中出现了以下文本:
版权所有©2015.
我正在尝试使用正则表达式动态更改上面的文本,以便始终反映最终输出中的当前年份.这是我的尝试,它似乎不起作用:
$finaloutput = preg_replace("/Copyright © [0-9]+/", "test", $finaloutput);
Run Code Online (Sandbox Code Playgroud)
当然,我正在使用硬编码字符串("测试")仅用于测试目的,因为当前的文本已经有2015年.所以,我的目标是改变这个:
版权所有©2015.保留所有权利....
进入这个:
版权所有©测试.版权所有....
我的正则表达式错了吗?
PS:只是为了让每个人都更好地了解上下文,这里的(一部分)XML片段$finaloutput被分配给:
<div class="dict_source"><strong>Powered by</strong> <a target="_blank" rel="nofollow" href="http://www.collinsdictionary.com/dictionary/english-spanish">Collins Complete Spanish Electronic Dictionary</a><br>Copyright © 2015 HarperCollins Publishers Limited.</div>
Run Code Online (Sandbox Code Playgroud)
更新:我尝试了@Avinash提供的答案,但仍未能使其正常工作.为了更好地说明问题,我挖出了一个在线preg_replace()测试人员.它结束于https://www.functions-online.com/preg_replace.html.以下是我在各种输入字段中输入的用于测试的信息:
$ pattern:'/(Copyright\s+©\s+)[0-9]+/u'
$替换:'\1test'
$ subject:<div class="dict_source"><strong>Powered by</strong> <a target="_blank" rel="nofollow" href="http://www.collinsdictionary.com/dictionary/english-spanish">Collins Complete Spanish Electronic Dictionary</a><br>Copyright © 2015 HarperCollins Publishers Limited.</div>
u每当您处理unicode字符时添加修饰符.
$finaloutput = preg_replace('/(Copyright\s+©\s+)[0-9]+/u', '\1test', $finaloutput);
Run Code Online (Sandbox Code Playgroud)
在 PHP 中使用 Avinashs 正则表达式:
\n\n<?php\n$subject = \'<div class="dict_source"><strong>Powered by</strong> <a target="_blank" rel="nofollow" href="http://www.collinsdictionary.com/dictionary/english-spanish">Collins Complete Spanish Electronic Dictionary</a><br>Copyright \xc2\xa9 2015 HarperCollins Publishers Limited.</div>\';\n$regex = \'/(Copyright\\s+\xc2\xa9\\s+)[0-9]+/u\';\n$output = preg_replace($regex, "\\${1}2016", $subject);\necho $output; // Happy new Year 2016!\n?>\nRun Code Online (Sandbox Code Playgroud)\n\n注意替换部分:(\\12016正如人们通常认为的那样)会让引擎感到困惑(应使用哪个捕获组???\\1[\\12016虽然这不存在]),所以解决方案是使用大括号。