0

我有一个类似这样的变量:

text1 http://www.server.com/10characters text2 http://www.server.com/10characters text3

我想preg_replace所有“http://www.server.com/10characters”链接“点击”,但“http://www.server.com/”是一个必须出现的常量,“10characters”总是任何10 个字符(不多也不少)

例如。代替

text1 http://www.server.com/d19d2aj53f text2 http://www.server.com/a49ds5j3ax text3
http://www.otherserver.com/a49ds5j3ax text3

text1 <a href="http://www.server.com/d19d2aj53f">Click</a> text2
<a href="http://www.server.com/a49ds5j3ax">Click</a>
text3 http://www.otherserver.com/xt92s5sfa2 text3

我不知道该怎么做:/我尝试了几种方法,但没有好的结果。

4

3 回答 3

0

我认为

preg_replace("http://www\.server\.com/[0-9a-zA-Z]{10}", " Click!", $myLink)

应该管用。

于 2012-08-16T22:25:52.060 回答
0

如果域后总是 10 个字符,则不需要 preg_replace:

$url1 = substr($url,0,35); //length of http://www.server.com/10characters is 35 chars
echo "text1 <a href=\"$url1\">click</a><br>";
/// etc
于 2012-08-16T22:21:52.820 回答
0
$str = 'text1 http://www.server.com/d19d2aj53f text2 http://www.server.com/a49ds5j3ax text3 http://www.otherserver.com/a49ds5j3ax text3';

echo preg_replace('~http://www\.server\.com/.{10}~i', '<a href="$0">click</a>', $str);

在模式中,.是“任意字符”,所以.{10}表示任意十个字符。

在替换中,$0表示与整个模式匹配的内容(在本例中为完整的 URL)。

这是一个工作示例

于 2012-08-16T23:59:25.860 回答