使用可单击的链接替换文本中的特定字符串

时间:2014-10-16 10:19:46

标签: php regex

例如我有一些纯文本。

  

西藏的丁丁是丁丁历险记的 s:20 卷   比利时漫画家Hergé的漫画系列。漫画家考虑过   这是他最喜欢的丁丁冒险和情感上的努力,就像他一样   在遭受创伤性噩梦和个人噩梦的同时创造了它   在决定离开他的妻子 s:3 几十年的冲突时更年轻   女人。

我需要的是将文本中的特定自定义链接转换为可点击的链接,使用冒号后的数字。 (S:

因此s:10会转换为http://somepage.com/demo.php?num=10

在这种情况下:

$text = "Tintin in Tibet is the s:20 volume of The Adventures of Tintin.";

这里的想法可能是使用正则表达式搜索特定形式的字符串并将其替换为爆炸(提取数字)和修改(转换为链接)版本本身,但我对正则表达式并不是很好并且不知道如何在实践中做到这一点。

此外,如果在整个文本中有多个可替换字符串实例,那么最快的选项是什么?

1 个答案:

答案 0 :(得分:1)

你是对的,解决这个问题的最佳方式是正则表达式:

$yourText = "Tintin in Tibet.....";
$linkText = preg_replace('/s:([0-9]+)/', '<a href="http://somepage.com/demo.php?num=$1">s:$1</a>', $yourText); 
echo $linkText;

我们匹配的任何内容都显示s:后跟任意数字([0-9]+表示“一个或多个数字”。)您可以执行\d+,但[0-9]+更多在我的意见中可读)。使用括号,我们捕获它们之间匹配的任何内容;在这种情况下的数字。然后我们将第一个匹配(第一对括号之间的内容)与$1(其中preg_replace解释为对匹配集的引用)注入锚标记。