2014-09-01 75 views
0

我需要找到PHP中的方法,以消除使用正則表達式的2串的最後部分刪除字符串的最後一個字符。這樣,一旦他們被剝奪了額外的人物,我可以找到他們之間的匹配。這裏是字符串數據我處理類型的例子:使用正則表達式

categories_widget-__i__ 
categories_widget-10 

所以我想刪除:

-__i__ from the first string 
-10 from the second string 

在此先感謝。

+0

如何識別字符串的最後部分?用' - '?你真的不需要regex那 – Sugar 2014-09-01 07:57:36

+0

必須正則表達式嗎? – kefy 2014-09-01 07:57:46

+0

以下所有答案都可以正常工作。 – George 2014-09-01 18:52:17

回答

0

你可以試試下面的代碼從-刪除所有字符高達最後。

<?php 
$text = <<<EOD 
categories_widget-__i__ 
categories_widget-10 
EOD; 
echo preg_replace("~-.*$~m","",$text); 
?> 

輸出:

categories_widget 
categories_widget 

-字面-符號相匹配。並且.*與符號-之後的任何字符匹配,直到行的末尾。 $表示一條線的結束。通過用空字符串替換所有匹配的字符會給你所需的輸出。

0
$str1 = "categories_widget-__i__"; 
$str2 = "categories_widget-10"; 
$arr1 = explode("-", $str1); 
$arr2 = explode("-", $str2); 
echo $arr1[0]; 
echo $arr2[0]; 
0

連字符的最後一次出現是否唯一重要?如果是這樣,你不需要正則表達式:

$firstPart = substr($str, 0, strrpos($str, '-')); 

» example