[英]PHP/MySQL - Image URL's with Spaces Not Working
我正在嘗試從 MYSQL 數據庫中獲取圖像 url 以顯示在網頁表上,但由於文件名中的空格,大多數鏈接都不起作用。 我已經嘗試過 urlencode 和 rawurlencode 並且它適用於某些文件,但不適用於大多數文件。 我真的不知道為什么有些工作,而另一些不工作。也許這里有人可以提供幫助。
這是 output:
不工作:
<img class="thumb" src="http://www.example.com/images/thumbnails/Brown" thrasher.jpg="">
在職的:
<img class="thumb" src="http://www.example.com/images/thumbnails/Growing Ideas-Drew Lawson-1.jpg">
出於某種原因,它將引號放在第一個空格之后,而不是包含整個字符串。 然而,它在第二個例子中有效。
<td><img class='thumb' src=".$fetch[urlencode(image_link_1)]." /></td>
其中image_link_1
是 url 到 MySQL 數據庫中的圖像。
這是整個 php 文件: https://pastebin.com/P6epznu1
<?php
require_once '/var/www/html/includes/artsurvey-con.php';
if(ISSET($_POST['search'])){
$search = urlencode($_POST['search']);
$search1 = urldecode($search);
$search2 = preg_replace("/[^a-zA-Z0-9,. ]/",'',$search1);
$query = $conn->query("SELECT * FROM `art_collection_records`
WHERE (`department` LIKE '%".$search2."%')
OR (`building` LIKE '%".$_POST['search']."%')
OR (`room_number` LIKE '%".$_POST['search']."%')
OR (`contact_person` LIKE '%".$_POST['search']."%')
OR (`category` LIKE '%".$_POST['search']."%')
OR (`painting` LIKE '%".$_POST['search']."%')
OR (`drawing` LIKE '%".$_POST['search']."%')
OR (`mixed` LIKE '%".$_POST['search']."%')
OR (`print` LIKE '%".$_POST['search']."%')
OR (`sculpture` LIKE '%".$_POST['search']."%')
OR (`craft` LIKE '%".$_POST['search']."%')
OR (`title` LIKE '%".$_POST['search']."%')
OR (`artist` LIKE '%".$_POST['search']."%')
OR (`how_acquired` LIKE '%".$_POST['search']."%')
OR (`back_notes` LIKE '%".$_POST['search']."%')
OR (`written_description` LIKE '%".$_POST['search']."%')
ORDER BY title ASC LIMIT 1200");
$row = $query->num_rows;
if($row > 0){
$output = "";
$output .= "
<center>
<h3>Search Results</h3>
</center>
<table class='table table-striped'>
<caption>End of Results</caption>
<thead class='thead-dark'>
<tr>
<th>ID</th>
<th>Department</th>
<th>Building</th>
<th>Room Number</th>
<th>Contact Person</th>
<th>Category</th>
<th>Painting</th>
<th>Drawing</th>
<th>Mixed</th>
<th>Print</th>
<th>Framed</th>
<th>Sculpture</th>
<th>Craft</th>
<th>Base</th>
<th>2D Size</th>
<th>3D Size</th>
<th>Title</th>
<th>Artist</th>
<th>Date Created</th>
<th>Date Acquired</th>
<th>Back Notes</th>
<th>Description</th>
<th>Image 1</th>
<th>Image 2</th>
<th>Image 3</th>
</tr>
</thead>
<tbody>";
while($fetch = $query->fetch_array()){
$output .= "
<tr>
<td>".$fetch['acs_id']."</td>
<td>".$fetch['department']."</td>
<td>".$fetch['building']."</td>
<td>".$fetch['room_number']."</td>
<td>".$fetch['contact_person']."</td>
<td>".$fetch['category']."</td>
<td>".$fetch['painting']."</td>
<td>".$fetch['drawing']."</td>
<td>".$fetch['mixed']."</td>
<td>".$fetch['print']."</td>
<td>".$fetch['framed']."</td>
<td>".$fetch['sculpture']."</td>
<td>".$fetch['craft']."</td>
<td>".$fetch['base']."</td>
<td>".$fetch['two_d_size']."</td>
<td>".$fetch['three_d_size']."</td>
<td>".$fetch['title']."</td>
<td>".$fetch['artist']."</td>
<td>".$fetch['date_created']."</td>
<td>".$fetch['date_acquired']."</td>
<td>".$fetch['back_notes']."</td>
<td>".$fetch['written_description']."</td>
<td><img class='thumb' src=".$fetch[urlencode(image_link_1)]." /></td>
<td><img class='thumb' src=".$fetch[rawurlencode(image_link_2)]." /></td>
<td><img class='thumb' src=".$fetch[rawurlencode(image_link_3)]." /></td>
</tr>";
}
$output .="
</tbody>
</table>
<a class='text-danger' href='#anchor'>Return to Top of Page</a>";
echo $output;
}else{
echo "<center><h4>Search Not Found!</h4></center>";
}
}
?>
任何幫助表示贊賞。 如果您需要更多詳細信息,請詢問。 謝謝!
因為src
屬性沒有引號。 因此代碼將其輸出給客戶端:
<td><img class='thumb' src=http://www.example.com/images/thumbnails/Brown thrasher.jpg /></td>
不出所料,瀏覽器在該標記thrasher.jpg
視為自己的屬性。 (此頁面上突出顯示的語法也是如此。)雖然瀏覽器在結構正確的 HTML 方面可以非常寬容,但這個案例證明了有效的 HTML 確實非常重要。
將屬性值用引號括起來,就像代碼已經對class
屬性所做的那樣:
<td><img class='thumb' src='".$fetch[urlencode(image_link_1)]."' /></td>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.