Allen 2023-03-10 11:41:55 7963 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]";

【版權聲明】
本文爲原創,遵循CC 4.0 BY-SA版權協議!轉載時請附上原文鏈接及本聲明。
原文鏈接:https://tdlib.com/am.php?t=MO8XuKxAKX42
Tag: 正则表达式 preg_replace ChatGPT
我也要發一個   ·   返回首頁   ·   返回[软件]   ·   前一個   ·   下一個
歡迎評論
未登錄,
請先 [ 註冊 ] or [ 登錄 ]
(一分鍾即可完成註冊!)
返回首頁     ·   返回[软件]   ·   返回頂部