Allen 2023-03-10 11:41:55 7985 0 0 0 0
正则表达式,preg_replace,ChatGPT,想实现一个复杂替换,实在搞不定,询问别人也挺麻烦的,想到ChatGPT,试着询问了一下,没想到,真得到了答案。ChatGPT太厉害了,帮我写了一个正则表达式替换字符串的高级用法:替换内容也用正则表达式,

想实现一个复杂替换,实在搞不定,询问别人也挺麻烦的,想到ChatGPT,试着询问了一下,没想到,真得到了答案。

想实现这样的替换:

//原:[url=http://aaa.com]这是一个测试[/url] 
//替换为:这是一个测试

自己写的规则:

$patterns[16] = '@\[url\](.*?)\](.*?)\[\/url]@';
$replacements[16] = '@(.*?)<\/a>@';
$message=preg_replace($patterns, $replacements, $message);

实现不成功,询问ChatGPT:

帮我写一个php正则表达式替换,原字符串:[url=http://aaa.com]这是一个测试[/url] 替换为:这是一个测试

回答如下:

可以使用preg_replace()函数来实现该功能。以下是符合您要求的代码:

$str = '[url=http://aaa.com]这是一个测试[/url]';
$pattern = '/[url=(.*?)](.*?)[/url]/i';
$replacement = '<a href="$1" rel="noopener" target="_blank">$2</a>';

$str = preg_replace($pattern, $replacement, $str);
echo $str;


该正则表达式匹配形如[url=...]...[/url]的字符串,并将其中的url和内容提取为捕获组1和捕获组2。
通过在替换字符串中使用$1和$2来引用这两个捕获组,最终替换为目标字符串。
/i标志用于忽略大小写匹配。

修改了一下,终于成功了:

$str = '[url=http://aaa.com]这是一个测试[/url]';
$pattern = '|\[url=(.*?)\](.*?)\[\/url\]|i';
$replacement = '<a href="$1" rel="noopener" target="_blank">$2</a>';

$str = preg_replace($pattern, $replacement, $str);
echo "[textarea]".$message."[/textarea]";

Tag: 正则表达式 preg_replace ChatGPT
我也要发一个   ·   返回首页   ·   返回[软件]   ·   前一个   ·   下一个
欢迎评论
未登录,
请先 [ 注册 ] or [ 登录 ]
(一分钟即可完成注册!)
返回首页     ·   返回[软件]   ·   返回顶部