PHP 正则表达式使用 preg_split
PHP Regex using preg_split
我需要从一个字符串中提取 2 个部分并将它们放在一个数组中。
$test = "add_image_1";
我需要确保此字符串以 "add_image" 开头并以“_1”结尾,但只在最后存储数字部分。我想使用 preg_split 作为学习经验,因为我将来需要使用它。
我不知道如何使用此函数来查找确切的单词(我尝试使用“\b”但失败了)所以我改用了“\w+”:
$result = preg_split("/(?=\w+)_(?=\d)/", $test);
print_r($result);
这工作正常,除了它还接受一堆其他无效格式,例如:
"add_image_1_2323"。我需要确保它只接受这种格式。最后一位的长度可以大于 1 位。
结果应该是:
Array (
[0] => add_image
[1] => 1
)
我怎样才能使它更安全?
以下正则表达式检查 add_image
作为字符串的开头并匹配数字前的 _
。
正则表达式: (?<=add_image)_(?=\d+$)
解释:
(?<=add_image)
往后看add_image
(?=\d+$)
向前查找字符串末尾的数字并匹配 _
.
我需要从一个字符串中提取 2 个部分并将它们放在一个数组中。
$test = "add_image_1";
我需要确保此字符串以 "add_image" 开头并以“_1”结尾,但只在最后存储数字部分。我想使用 preg_split 作为学习经验,因为我将来需要使用它。
我不知道如何使用此函数来查找确切的单词(我尝试使用“\b”但失败了)所以我改用了“\w+”:
$result = preg_split("/(?=\w+)_(?=\d)/", $test);
print_r($result);
这工作正常,除了它还接受一堆其他无效格式,例如: "add_image_1_2323"。我需要确保它只接受这种格式。最后一位的长度可以大于 1 位。
结果应该是:
Array (
[0] => add_image
[1] => 1
)
我怎样才能使它更安全?
以下正则表达式检查 add_image
作为字符串的开头并匹配数字前的 _
。
正则表达式: (?<=add_image)_(?=\d+$)
解释:
(?<=add_image)
往后看add_image
(?=\d+$)
向前查找字符串末尾的数字并匹配_
.