2013-02-19 90 views
1

我想提取字符串中的最後兩個數字。首先,我刪除任何空格或特殊字符,並用連字符替換它們,然後如果有兩個連字符,則將其刪除。 ext我刪除任何尾隨連字符。接下來,我想提取字符串中連字符後面的最後兩個字符。例如,如何提取該字符串中的最後一個字符,即1在最後一個連字符後? awesome-page-1。我的代碼是在這裏提取最後一個字符

$string = 'awesome [email protected]'; 
    $slug = preg_replace('/[^a-zA-Z0-9]/', '-', $string);//replace spaces and special characters with space 
     $slug = preg_replace('#-{2,}#', '-', $slug);//two hyphens following each other 
     $slug = trim($slug, '-');//remove trailing hyphens 

回答

1

您可以使用strrchr()找到所創建的塞的最後衝刺,然後跳過,使用substr()

$slug = trim(preg_replace('/[^a-z0-9]+/i', '-', $string), '-'); 

echo substr(strrchr($slug, '-'), 1); 

如果在$string沒有破折號,其結果將是空

Demo

+0

感謝的人。有用。 – sammyukavi 2013-02-19 13:49:43

1

您可以使用數組作爲參數有關preg_replace;

$str = 'awesome   [email protected]'; 
$slug = preg_replace(
    array('~[^a-zA-Z0-9-]~', '~-+~'), 
    '-', 
    trim($str) 
); 
print $slug; // awesome-page-1 

preg_match('~-([^-]*)$~', $slug, $m); 
print $m[1]; // 1 
1

或者,如果你只是想匹配,如果連字符後的最後一個字符是數字:

$slug = trim(preg_replace('/[^a-z0-9]+/i', '-', $string), '-'); 
if (preg_match('/^.*-(\d+)$/', $slug, $matches)) {                        
    echo $matches[1];                 
} else {                    
    echo 'No Match!';                 
} 
相關問題