1

私はphpが初めてです。

\xampp\htdocs\Sample\tmp/one.jpg としてデフォルトの画像パスを取得しています

\xampp\htdocs を http:\localhost に置き換える必要があります

このように使用すると、必要な出力が得られます

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";
$imagepathurl = "\xampp\htdocs\Sample\tmp\/safety-masks_5092610ad4f3f.jpg";

echo str_replace($absolute,$relative,$imagepathurl);

しかし、データベースから $imagepathurl を取得しています。これを同じ形式で使用すると、結果が得られません

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";

$imagepathurl = '"'.$imagepath.'"';
echo str_replace($absolute,$relative,$imagepathurl);
4

3 に答える 3

0

2 番目のリストで、Why の"前後に追加すると$imagepath?

この行を削除する$imagepathurl = '"'.$imagepath.'"';と、機能するはずです。

$absolute = "\xampp\htdocs";
$relative = "http:\\localhost";

echo str_replace($absolute,$relative,$imagepath);

更新 (行が何をするかの例)

$var = "MyString";   // Content of the String => MyString
$var = '"'.$var.'"'; // Content of the String => "MyString"
于 2012-11-01T12:28:40.457 に答える
0

関数pathinfoを使用して、パスのすべてのコンポーネントを含む結果として配列を取得します。

次に、変更する部分を置き換え、パス コンポーネントを再度連結して、目的の新しいパスを取得します。

他の投稿でコメントされている方法は、単なる文字列操作ソリューションです。パスを解析する際に安全なものが必要な場合は、php 関数を使用する必要がありますpathinfo。非常に単純な場合はstr_replace、作業を行います。

于 2012-11-01T12:29:33.280 に答える
0

データベースが文字列に文字エンコーディングを適用しないことを確認してから、最初に文字列値をデコードしてから、このコードを使用してください。

$absolute = "C:\xampp\htdocs";
$relative = "http:\\localhost";
// if database contains encoded string decode first here
//creating absolute path for image (this will remove ./, ../ \, / to create operating system preferred path as windows uses \ and linuz user / as path separator ) 
$imagepathurl = realpath($imagepathurl);
// replasing absolute path to root directory with relative path
echo str_replace( $absolute , $relative , $imagepathurl);
于 2012-11-01T13:55:38.203 に答える