具有一定数量字符的preg_replace的正则表达式

时间:2012-08-16 22:19:03

标签: regex

我有一个像这样的变量:

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

我想preg_replace所有“http://www.server.com/10characters”链接“点击”,但“http://www.server.com/”是必须发生的常量和“10个字符”总是任意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

我不知道该怎么做:/我尝试了几种方法,但效果不佳。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为

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

应该有用。

答案 2 :(得分: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)。

这是a working example