我是一名ob-c程序员,他需要一些php来完成他当前的项目。我猜我需要使用正则表达式来解决当前的问题,但我从来没有使用过正则表达式,并且已经证明了它可以一次性地解决一个问题。我在SO上发现的类似问题帮助我解决了我的问题,因为通常它们都是为那些对如何做这样的事情的人写的,正如我所说,我是这方面的新手。
我的问题是:
我有一个字符串,以下划线后跟数字结尾:
$ string = XXXXXXXX_123
我想把它分成两个字符串:
$ root = XXXXXXXX_
和
$ number = 123
事情稍微复杂一点:
(如果您还没猜到,这些是需要递增的文件名)
感谢您的时间
答案 0 :(得分:2)
$pos = strrpos($string, '_') + 1;
$root = substr($string, 0, $pos);
$number = substr($string, $pos);
答案 1 :(得分:1)
嗯,这是一种处理脏的方法,并将它包装在一个可以一次又一次重复使用的好函数中:
<?php
// Hard code it
$str1 = "XXXXXXXX_123";
$last1 = strrpos($str1, "_");
$root1 = substr($str1, 0, $last1 + 1);
$number1 = substr($str1, $last1 + 1);
echo("<p>Root 1: " . $root1 . "<br />Number 1: " . $number1 . "</p>");
// Or make it a re-usable function
// Returns Array
function last_chr($str, $chr = "_") {
$last = strrpos($str, $chr) + 1;
$root = substr($str, 0, $last);
$number = substr($str, $last);
return(array("root" => $root, "number" => $number));
}
// Define second string, call function, and reference the array elements within the echo
$str2 = "XX_X12_9_123";
$second = last_chr($str2);
echo("<p>Root 2: " . $second["root"] . "<br />Number 2: " . $second["number"] . "</p>");
?>
我建议使用该函数并使用它返回的引用数组键。
答案 2 :(得分:1)
使用此模式(.*_)([^_]+)$
Demo