-3

我想用 [FILENAME] 替换以下文本中的 url,其中 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],其他所有文字在哪里?

4

4 回答 4

1

使用str_replace

您的参数顺序错误,您需要像这样更改它们:

$result = str_replace($link,"[".$filename."]",$text);

有关文档,请参见此处

替代(正则表达式)

您可以使用正则表达式。这种方法稍微慢一些,但它会使用更少的代码:

$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);

总结

您可以使用上述任何一种方法,但我认为我会使用第一种。正则表达式可能很棒,但如果您错误地定义它们,或者忘记模式中的潜在因素,它们也可能不可靠。

于 2013-10-23T08:37:08.843 回答
1
$result = preg_replace ('/http:\/\/somesite\/(.+)\.png/', '[$1]', $text);
于 2013-10-23T08:39:18.677 回答
0

我会使用#作为正则表达式分隔符。

$result = preg_replace('#http://somesite/(.+)\.png#', '[$1]', $text);
于 2013-10-23T08:55:53.097 回答
0

You can use this:

<?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;

?>

Output:

check out this car [ford]

Or if you wanna link to use forum

<?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;
?>

Or you want to up "ford" as link you can use this:

<?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;

?>
于 2013-10-23T09:35:16.453 回答