2016-02-05 21 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

相关问题