Php 用可单击的链接替换文本中的特定字符串
例如,我有一些纯文本 《丁丁在西藏》是《丁丁历险记》s:20卷,该书是 比利时漫画家Hergé的漫画系列。漫画家考虑 这是他最喜欢的丁丁历险和情感上的努力 它是在遭受痛苦的噩梦和个人伤害时创作的 在决定离开妻子时发生冲突:3年 女人 我需要的是将文本中的特定自定义链接转换为可单击链接,使用冒号后面的数字。(s:编号) 因此Php 用可单击的链接替换文本中的特定字符串,php,regex,Php,Regex,例如,我有一些纯文本 《丁丁在西藏》是《丁丁历险记》s:20卷,该书是 比利时漫画家Hergé的漫画系列。漫画家考虑 这是他最喜欢的丁丁历险和情感上的努力 它是在遭受痛苦的噩梦和个人伤害时创作的 在决定离开妻子时发生冲突:3年 女人 我需要的是将文本中的特定自定义链接转换为可单击链接,使用冒号后面的数字。(s:编号) 因此s:10将转换为http://somepage.com/demo.php?num=10 在这种情况下: 这里的想法可能是使用正则表达式搜索字符串的特定形式,并将其替换为其自身的
s:10
将转换为http://somepage.com/demo.php?num=10
在这种情况下:
这里的想法可能是使用正则表达式搜索字符串的特定形式,并将其替换为其自身的分解(提取数字)和修改(转换为链接)版本,但我对正则表达式不是很在行,也不知道如何在实践中做到这一点
另外,当文本中有许多可替换字符串的实例时,什么是最快的选择?如果您是正确的,最好的解决方法是使用正则表达式:
$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;
$yourText=“丁丁在西藏…”;
$linkText=preg_replace('/s:([0-9]+)/',''$yourText);
echo$linkText;
我们正在匹配任何写有
s:
后跟任何数字的内容([0-9]+
表示“一个或多个数字”。您可以执行\d+
,但我认为[0-9]+
更易于阅读)。通过括号,我们可以捕捉到它们之间的匹配;在本例中,是数字。然后,我们将第一个匹配项(第一对括号之间的内容)与$1
(preg\u replace将其解释为匹配集的引用)注入到锚定标记中。很高兴听到这个消息。祝您有个美好的一天!
$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;