2015-02-07 86 views
0

我有以下的PHP:PHP字符串操作 - 條jpg擴展

   <?php 
      $image_directory = JPATH_SITE . '/images/site/'; 
      $images = JFolder::files($image_directory); 
      foreach($images as $image) { 
       echo '<li><img src="/images/site/'.$image.'"> 
        <p class="slidecaption">'.$image.'</p></li>'; 

      } 
      ?> 

所以$圖像最終被1980.jpg(例如)。我怎樣才能在這個字符串上執行一個操作,然後去掉幻燈片段落的「.jpg」和輸出?

非常感謝您的時間。

+1

當PHP提供了[內置函數(http://php.net/ manual/en/function.pathinfo.php )專門爲此目的使用它 – 2015-02-07 23:23:49

回答

0

如果你有每次相同的擴展名,那麼你可以使用str_replace

str_replace('.jpg','',$image); 

如果你有其他更多的擴展,你可以用正則表達式是這樣做的:

$imageName = preg_replace('/\\.[^.\\s]{3,4}$/', '', $image); 
+0

如果它不止一次在文件名中,該怎麼辦?抓住最後一個。在字符串和它後面的所有東西可能會更好在長期運行 – 2015-02-07 22:59:37

+0

當您的字符串中有兩次.jpg時,它將刪除它們,只有在出現錯誤時纔會發生這種情況,並且您必須將文件擴展名。但那你的名字是正確的。 – Stony 2015-02-07 23:02:39

+1

這真的是錯誤的... basename不會刪除文件擴展名;) 'echo basename(「test.jpg」);'並且當您將一個後綴定義爲'.jpg'時,那麼它就像str_replace一樣。 http://php.net/manual/en/function.basename.php – Stony 2015-02-07 23:07:40