想实现一个复杂替换,实在搞不定,询问别人也挺麻烦的,想到ChatGPT,试着询问了一下,没想到,真得到了答案。
想实现这样的替换:
//原:[url=http://aaa.com]这是一个测试[/url]
//替换为:这是一个测试
自己写的规则:
$patterns[16] = '@\[url\](.*?)\](.*?)\[\/url]@';
$replacements[16] = '@(.*?)<\/a>@';
$message=preg_replace($patterns, $replacements, $message);
帮我写一个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]";
【版權聲明】