我有一个字符串,其中可能包含类似以下内容的模式:
LINK([anchor text],[link])
我想做的就是将此表达式转换为HTML链接:
<a href="link">anchor text</a>
目前,我正在使用以下PHP代码段进行替换:
$string = 'LINK( some anchor text , http://mydomain.com )';
$search = '/LINK\s*\(\s*(.+),\s*([^\s]+)\s*\)/';
$replace = '<a href="$2">$1</a>';
preg_replace($search, $replace, $string);
我面临的问题是锚文本后的空格。幸运的是,在HTML中,多个空格被解释为单个空格,但是在此示例中,我将显示带有(带下划线的)烦人空格的链接。有什么办法可以修剪此锚文本?我不能将其视为“链接”子字符串,因为它可能包含空格。
假设锚文本不能连续包含逗号或超过1个空格,则可以使用:
LINK\s*\(\s*([^\s,]+(?:\s[^\s,]+)*)\s*,\s*(\S+)\s*\)
而不是.+
,我使用[^\s,]+(?:\s[^\s,]+)*
它将匹配一个单词,并且将更多的单词匹配为空格(其中一个单词是一系列具有至少一个字符的非空格字符)。
还更改了您的否定类[^\s]
,该类稍后出现\S
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句