2016-02-05 58 views
2

我試圖檢查破折號後的最後一個值( - )是PHP中字符串中的數字,如果它的數字然後刪除來自最後一個破折號( - )的值。檢查破折號後的最後一個值( - )是在PHP中的字符串中的數字

這裏是我的字符串看起來像:

about-us-1或者它可能看起來像about-us-new,但我只是想,因爲它有破折號後的最後一個數值僅about-us-1修剪。

這裏是我的PHP函數看起來像:

public static function checkSlug($modelName, $id, $inputSlug = null){ 
      $i =1; 
      $rows = self::getAllRow($modelName, $id); 
      foreach($rows as $row){ 
       if($inputSlug == $row['slug']){ 
        $inputSlug = $inputSlug."-".$i; 
        $i++; 
       } 
      } 
      return $inputSlug; 
     } 

什麼它現在做的是它-這樣about-us-1-2

尋找短期和簡單的技術來解決這個後增加了一個新的號碼。

謝謝!

回答

2

你可以改變這一行:

$inputSlug = $inputSlug."-".$i; 

這樣:

$inputSlug = preg_replace('/-\d+$/', '', $inputSlug) . "-" . $i; 

preg_replace('/-\d+$/', '', $inputSlug)將輸入字符串如果存在刪除連字符和結尾數字。

+1

哇它的工作。但是這是什麼? '/ - \ d + $ /' – user3201500

+0

這是與'-'匹配的正則表達式,後跟1個或多個數字,後跟行尾錨點。 – anubhava

+0

如果我想刪除第一個破折號並在第一個破折號值之前,該怎麼辦?這種情況下的正則表達式是什麼? – user3201500

1

使用的preg_replace()

<?php 
$string = 'about-us-1'; 
$string = preg_replace('/-[0-9]*$/', '', $string); 
echo $string; // about-us 
?> 
+0

是的,這也是工作:) – user3201500

+0

@ user3201500,謝謝。 anubhava的回答比我好。 – Pupil

+0

是的,謝謝你的推薦:)我真的很高興它可以用一種表達方式解決。 – user3201500

相關問題