我有一个文本数据库,在英语句子中间包含这种语法,我需要使用PHP转换为HTML链接
"text1(text1)":http://www.example.com/mypage
注意:
text1始终与括号中的文字相同
整个字符串始终带有引号,括号,冒号,因此每种语法的语法相同。
有时字符串末尾有空格,但有时会出现问号或逗号或其他标点符号。
我需要将这些转换为基本链接,例如
<a href="http://www.example.com/mypage">text1</a>
我该怎么做?我是否需要爆炸或正则表达式或两者兼而有之?
答案 0 :(得分:1)
答案 1 :(得分:0)
答案 2 :(得分:0)
适当的正则表达式可以是:
$str = '"text1(text1)":http://www.example.com/mypage';
preg_match('#^"([^\(]+)' .
'\(([^\)]+)\)[^"]*":(.+)#', $str, $m);
print '<a href="'.$m[3].'">'.$m[2].'</a>' . PHP_EOL;
答案 3 :(得分:0)
您可以使用此替代品:
$pattern = '~"([^("]+)\(\1\)":(http://\S+)(?=[\s\pP]|\z)~';
$replacement = '<a href="\2">\1</a>';
$result = preg_replace($pattern, $replacement, $text);
模式细节:
([^("]+)
此部分将捕获组1中的text1。使用否定字符类(不包括双引号和左括号)的优点是多个:
[^a]+a
转换为[^a]++a
\S+
表示所有不是空白的一次或多次
(?=[\s\pP]|\z)
是lookahead assertion,用于检查网址后面是空格,标点字符(\pP
)或字符串的结尾。