2014-09-01 81 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