Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用可单击的链接替换文本中的特定字符串_Php_Regex - Fatal编程技术网

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

Php 用可单击的链接替换文本中的特定字符串,php,regex,Php,Regex,例如,我有一些纯文本 《丁丁在西藏》是《丁丁历险记》s:20卷,该书是 比利时漫画家Hergé的漫画系列。漫画家考虑 这是他最喜欢的丁丁历险和情感上的努力 它是在遭受痛苦的噩梦和个人伤害时创作的 在决定离开妻子时发生冲突:3年 女人 我需要的是将文本中的特定自定义链接转换为可单击链接,使用冒号后面的数字。(s:编号) 因此s:10将转换为http://somepage.com/demo.php?num=10 在这种情况下: 这里的想法可能是使用正则表达式搜索字符串的特定形式,并将其替换为其自身的

例如,我有一些纯文本

《丁丁在西藏》是《丁丁历险记》s:20卷,该书是 比利时漫画家Hergé的漫画系列。漫画家考虑 这是他最喜欢的丁丁历险和情感上的努力 它是在遭受痛苦的噩梦和个人伤害时创作的 在决定离开妻子时发生冲突:3年 女人

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

因此
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;