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
包含数字?