私はこの文字列を持っています:
$str="http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
._SL110_.jpg
パーツを削除することで短縮できる組み込みのphp関数はありますか?その結果、次のようになります。
http://ecx.images-amazon.com/images/I/418lsVTc0aL
いいえ、組み込みの URL 短縮機能の php 関数はありません。同様のことをしたい場合は、部分文字列を使用するか、短いリンクを生成して長い値と短い値をデータベースのどこかに保存し、短い値のみを表示する関数を作成できます。
まあ、正規表現の置換が必要かどうか (完全な値がわからない場合)、または以下のような単純な str_replace を実行できるかどうかによって異なります。
$str = str_replace(".SL110.jpg", "", "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg");
preg_replace() を使用できます。
例えばpreg_replace("/\.[^\.]+\.jpg$/i", "", $str);
以下を使用することをお勧めします。
$tmp = explode("._", $str);
$tmp[0]
削除したい部分が常に「._」(ドットアンダースコア)記号で区切られていることを確認する場合は、目的に使用します。
substr($data,0,strpos($data,"._"))
「._」の後のすべてを削除したい場合は、これを行うことができます
あなたが試すことができます
$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
いいえ、そうではありません (少なくとも直接ではありません)。このような 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