簡體   English   中英

PHP/MySQL - 帶有空格的圖像 URL 不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM