-3

次のテキストの URL を [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]が、他のすべてのテキストはどこにありますか?

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 に答える
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;

?>
于 2013-10-23T09:35:16.453 に答える
0

#正規表現区切り文字として使用します。

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