我有一个遵循以下语法的不同字符串:x-y12h-z13-1
我希望能够使用 PHP 获取“z”之后的整数。在这个例子中,它将是 13。我不确定找出它的最佳方法,而且我非常不擅长正则表达式。
任何帮助是极大的赞赏。
编辑:字符串在“z”整数值之前和之后的长度也可以不同。
我有一个遵循以下语法的不同字符串:x-y12h-z13-1
我希望能够使用 PHP 获取“z”之后的整数。在这个例子中,它将是 13。我不确定找出它的最佳方法,而且我非常不擅长正则表达式。
任何帮助是极大的赞赏。
编辑:字符串在“z”整数值之前和之后的长度也可以不同。
<?php
preg_match('/(?<=z)\d+/', 'x-y12h-z13-1', $matches);
var_dump($matches[0]);
匹配一个或多个前面带有 az 的数字。http://codepad.viper-7.com/X5mu2m
$your_integer = (int)substr($str, strpos($str, "z") + 1);
这会找到第一个 z,然后切断字符串,包括 z。
然后我依靠 PHP 的转换行为读取第一个字符,直到它找不到更多数字并将它们转换为整数。
如果“z”是真正稳定的值,那么
$subject = "x-y12h-z13-1";
$pattern = '/-z(\d*)-/i';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
echo $matches[1][0];
如果结构稳定,则
$subject = "x-y12h-z13-1";
$pattern = '/^.*-.*-\w(\d*)-.*/i';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
echo $matches[1][0];
字符串的一般正则表达式:
<?php
$value = preg_match('/^x-y(\d+)h-z(\d+)-(\d+)/','x-y12h-z13-1', $matches);
print_r($matches);
$matches[2] 包含 'z' 之后的值
输出:
Array
(
[0] => x-y12h-z13-1
[1] => 12
[2] => 13
[3] => 1
)
这段代码应该适合你
$string = "x-y12h-z13-1";
$expl = explode("-", $string);
$str = "";
foreach ($expl as $arr) {
$strpos = "";
$strpos = strstr( $arr, "z");
if ($strpos) {
$str = substr($arr, "1",strlen($arr));
}
}
echo $str;
$str 将使您的字符串输出为 13。
您也可以使用字符串函数提取它,这是示例:
$a = 'x-y12h-z13-1'; echo substr(strstr($a,'z'),1,strrpos(strstr($a,'z'),'-')-1);
这完全取决于源字符串的结构有多“稳定”。您可以substr()
在开始时使用http://php.net/substr和strstr()
http://php.net/strstr