我想用[FILENAME]替换以下文本中的网址,其中FILENAME是文件的名称。
check out this car http://somesite/ford.png
这将显示为:
check out this car [ford]
到目前为止,这是我的代码:
$text = $_POST['text']; //get submitted post
$link = strstr($text, 'http://'); //look for an http
$filename = pathinfo ($link, PATHINFO_FILENAME); //get filename from $link
$result = str_replace($text,$link,"[".$filename."]"); // search on $text, find $link, replace it with $filename
echo $result;
目前,我只回来[ford]
,其他所有文字都在哪里?
答案 0 :(得分:1)
str_replace
您的参数输入顺序错误,您需要更改它们:
$result = str_replace($link,"[".$filename."]",$text);
有关文档,请参阅here。
您可以使用正则表达式。这种方法速度稍慢,但使用的代码更少:
$result = preg_replace('/http(s?):\/\/[a-z]\/(.+)\.png/i', '[$1]', $text);
然后,您可以通过允许其他类型的图像来进一步改变您的正则表达式:
$result = preg_replace('/http(s?):\/\/[a-z]\/(.+)\.(png|gif|jpg|jpeg)/i', '[$1]', $text);
您可以使用上述任何一种方法,但在我看来,我会使用第一种方法。正则表达式可能非常出色,但如果您错误地定义它们,或者忘记模式中的潜在因素,它们也可能不可靠。
答案 1 :(得分:1)
$result = preg_replace ('/http:\/\/somesite\/(.+)\.png/', '[$1]', $text);
答案 2 :(得分:0)
我使用#
作为正则表达式分隔符。
$result = preg_replace('#http://somesite/(.+)\.png#', '[$1]', $text);
答案 3 :(得分:0)
您可以使用:
<?php
$text = 'check out this car http://somesite/ford.png'; //get submitted post
$link = strstr($text, 'http://'); //look for an http
$filename = pathinfo ($link, PATHINFO_FILENAME); //get filename from $link
$result = ereg_replace("http://([-]*[.]?[a-zA-Z0-9_/-?&%])*", "[$filename]", $text); // search on $text, find $link, replace it with $filename
echo $result;
?>
输出:
看看这辆车[福特]
或者,如果您想链接到使用论坛
<?php
$text = 'check out this car http://somesite/ford.png'; //get submitted post
$link = strstr($text, 'http://'); //look for an http
$filename = pathinfo ($link, PATHINFO_FILENAME); //get filename from $link
$result = ereg_replace("http://([-]*[.]?[a-zA-Z0-9_/-?&%])*", "<a href=\"\\0\">\\0</a>", $text); // search on $text, find $link, replace it with $filename
echo $result;
?>
或者你想把“福特”作为链接,你可以使用这个:
<?php
$text = 'check out this car http://somesite/ford.png'; //get submitted post
$link = strstr($text, 'http://'); //look for an http
$filename = pathinfo ($link, PATHINFO_FILENAME); //get filename from $link
$result = ereg_replace("http://([-]*[.]?[a-zA-Z0-9_/-?&%])*", "<a href=\"\\0\">$filename</a>", $text); // search on $text, find $link, replace it with $filename
echo $result;
?>