Php 提取字符串的最后一段

Php 提取字符串的最后一段,php,regex,Php,Regex,我有这样一个字符串: [numbers]firstword[numbers]mytargetstring 123firstword21567mytargetstring 我想知道在考虑以下因素的情况下,如何提取“targetstring”: a、 )数字是数字,例如,包含数字的完整字符串: 12firstword21mytargetstring b、 )数字可以是任意数字,例如,上面每个数字有两个,但可以是任意数字,如下所示: [numbers]firstword[numbers]myta

我有这样一个字符串:

[numbers]firstword[numbers]mytargetstring
123firstword21567mytargetstring
我想知道在考虑以下因素的情况下,如何提取“targetstring”:

a、 )数字是数字,例如,包含数字的完整字符串:

12firstword21mytargetstring
b、 )数字可以是任意数字,例如,上面每个数字有两个,但可以是任意数字,如下所示:

[numbers]firstword[numbers]mytargetstring
123firstword21567mytargetstring
不管位数是多少,我只对提取“mytargetstring”感兴趣

顺便说一下,“第一个字”是固定的,不会随任何组合而改变

我对正则表达式不是很在行,所以我很感激有很强背景的人能够建议如何使用PHP实现这一点。非常感谢。

这样就可以了(或者应该可以了)

preg_match("/[0-9]+[a-z]+[0-9]+([a-z]+)/i", $your_string, $matches);
print_r($matches);
它分解为

\d+\w+\d+(\w+)$
\d+
-一个或多个数字

\w+
-后跟一个或多个单词字符

\d+
-后跟1个或多个数字

(\w+)$
-后跟一个或多个以字符串结尾的单词字符。括号将其标记为要提取的组

这将完成(或应该完成)

它分解为

\d+\w+\d+(\w+)$
\d+
-一个或多个数字

\w+
-后跟一个或多个单词字符

\d+
-后跟1个或多个数字

(\w+)$
-后跟一个或多个以字符串结尾的单词字符。括号将其标记为要提取的组

您可以使用和进行提取

你可以用和来做

试试看

print_r(preg_split('/\d+/i', "12firstword21mytargetstring"));
echo '<br/>';
echo 'Final string is: '.end(preg_split('/\d+/i', "12firstword21mytargetstring"));
print_r(preg_split('/\d+/i',“12firstword21mytargetstring”);
回声“
”; echo'最后一个字符串是:'.end(preg_split('/\d+/i',“12firstword21mytargetstring”);

上测试

print_r(preg_split('/\d+/i', "12firstword21mytargetstring"));
echo '<br/>';
echo 'Final string is: '.end(preg_split('/\d+/i', "12firstword21mytargetstring"));
print_r(preg_split('/\d+/i',“12firstword21mytargetstring”);
回声“
”; echo'最后一个字符串是:'.end(preg_split('/\d+/i',“12firstword21mytargetstring”);

经过测试,您的简单解决方案如下:-

$keywords = preg_split("/[\d,]+/", "hypertext123language2434programming");
echo($keywords[2]);

您的简单解决方案如下:-

$keywords = preg_split("/[\d,]+/", "hypertext123language2434programming");
echo($keywords[2]);

您不需要正则表达式:

for ($i=strlen($string)-1; $i; $i--) {
   if (is_numeric($string[$i])) break; 
}

$extracted_string = substr($string, $i+1);
在上面,它可能是您可以得到的更快的实现,当然比使用regex更快,对于这个简单的情况,您不需要使用regex


请参阅您不需要正则表达式的

for ($i=strlen($string)-1; $i; $i--) {
   if (is_numeric($string[$i])) break; 
}

$extracted_string = substr($string, $i+1);
在上面,它可能是您可以得到的更快的实现,当然比使用regex更快,对于这个简单的情况,您不需要使用regex


请参阅

在使用诸如end、reset等数组操作函数时要小心。。此数组是通过引用传递的,因为它是由函数修改的。这意味着您必须传递一个实变量,而不是返回数组的函数,因为只能通过引用传递实变量。从php 5.4开始,此代码将导致严格的通知。在使用诸如end、reset等数组操作函数时,请小心。。此数组是通过引用传递的,因为它是由函数修改的。这意味着您必须传递一个实变量,而不是返回数组的函数,因为只能通过引用传递实变量。从php 5.4开始,此代码将导致严格通知是否可以
mytargetstring
包含数字?是否可以
mytargetstring
包含数字?