2

私はこの文字列を持っています:

$str="http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";

._SL110_.jpgパーツを削除することで短縮できる組み込みのphp関数はありますか?その結果、次のようになります。

http://ecx.images-amazon.com/images/I/418lsVTc0aL
4

7 に答える 7

2

いいえ、組み込みの URL 短縮機能の php 関数はありません。同様のことをしたい場合は、部分文字列を使用するか、短いリンクを生成して長い値と短い値をデータベースのどこかに保存し、短い値のみを表示する関数を作成できます。

于 2012-11-23T14:52:35.630 に答える
1

まあ、正規表現の置換が必要かどうか (完全な値がわからない場合)、または以下のような単純な str_replace を実行できるかどうかによって異なります。

$str = str_replace(".SL110.jpg", "", "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg");
于 2012-11-23T14:33:39.780 に答える
1

preg_replace() を使用できます。

例えばpreg_replace("/\.[^\.]+\.jpg$/i", "", $str);

于 2012-11-23T14:36:18.550 に答える
0

以下を使用することをお勧めします。

$tmp = explode("._", $str);

$tmp[0]削除したい部分が常に「._」(ドットアンダースコア)記号で区切られていることを確認する場合は、目的に使用します。

于 2012-11-23T14:37:59.677 に答える
0

substr($data,0,strpos($data,"._"))「._」の後のすべてを削除したい場合は、これを行うことができます

于 2012-11-23T15:05:04.050 に答える
0

あなたが試すことができます

$str = "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
echo "<pre>";

A.

echo strrev(explode(".", strrev($str), 3)[2]) , PHP_EOL;

B.

echo pathinfo($str,PATHINFO_DIRNAME) . PATH_SEPARATOR . strstr(pathinfo($str,PATHINFO_FILENAME),".",true), PHP_EOL;

C.

echo preg_replace(sprintf("/.[^.]+\.%s$/i", pathinfo($str, PATHINFO_EXTENSION)), null, $str), PHP_EOL;

出力

http://ecx.images-amazon.com/images/I/418lsVTc0aL

デモを見る

于 2012-11-23T15:11:39.233 に答える
0

いいえ、そうではありません (少なくとも直接ではありません)。このような URL 短縮サービスは通常、一意の ID を生成し、元の URL と生成された ID を記憶します。そのような URL を入力すると、指定された ID を探してターゲット URL にリダイレクトするスクリプトが開始されます。

文字列の一部を切り取りたい場合は、ファイル名の形式が示されていると仮定しsubstr()て、最初のドットとその場所を探します。または

$tmp = explode('.', $filename);
$shortName = $tmp[0];

接尾辞._SL110_.jpgが常にある場合は、単純にstr_replace('._SL110_.jpg', '', $filename)機能します。

編集

上記はファイル名のみの例です。コード全体は次のようになります。

$url = "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
$urlTmp = explode('/', $url);
$fileNameTmp = explode( '.', $urlTmp[ count($urlTmp)-1 ] );

$urlTmp[ count($urlTmp)-1  ] = $fileNameTmp[0];
$newUrl = implode('/', $urlTmp );

printf("Old: %s\nNew: %s\n", $url, $newUrl);

与えます:

Old: http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg
New: http://ecx.images-amazon.com/images/I/418lsVTc0aL
于 2012-11-23T14:34:00.123 に答える