我有一个像这样的变量:
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
我不知道该怎么做:/我尝试了几种方法,但效果不佳。
答案 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)。