我正在尝试使用我在Word上创建的参考文本。
我有纯文本,其中包含(1)
,(1,2,5)
,(1-5)
或其组合:(1-5,8,10-15)
。我想将数字作为引用的超链接,并将整个部分放在(
和)
之间的另一个HTML标记中。
我发现我可以使用正则表达式来匹配括号和带#(\([0-9,\-]*\))#
的数字,以及带有([\(,\-]?(\d{2}|\d)[\),\-])
的数字,但是如何进行替换以便我的输出就像这个?
!(#1#,#2#-#5#)!
非常感谢你!
答案 0 :(得分:0)
我很抱歉我的神秘描述。
我想做的是,在文章的最后,在我的文章中将每个参考号都作为该参考的链接。引用可以格式化为(1)
,(1-5)
或(1,3,5)
,或组合:(1-3,5,8-10)
。
我想要的输出是例如(<a href="ref-1">1</a>)
等等。
我发现在一次查找和替换中我无法做到这一点,所以我不得不将其分解为两次。 这就是我想出的:
<?php
$input = "Hello, I am a sample text(1). I have references in me(2-5). They can be in a weird, mixed format(1,3,5-8,10,13)";
function references($input) {
preg_match_all("#\([0-9,\-]*\)#i", $input, $referenties);
$tekst = preg_split("#\(([0-9,\-]*)\)#i", $input);
$referenties = preg_replace("#([\d]+)#", "<a href=\"#ref-$1\">$1</a>", $referenties[0]);
for($i=0; $i < count($tekst)-1 OR $i < count($referenties)-1; $i++) {
$output.=$tekst[$i].$referenties[$i];
}
return $output;
}
echo references($input);
?>
它对我有用。 你对我如何做得更好有什么想法吗?