我有一个遵循这种语法的变化字符串:x-y12h-z13-1
我希望能够使用PHP在“z”之后获取整数。在这个例子中它将是13.我不确定找出它的最佳方法,我在正则表达式上非常糟糕。
非常感谢任何帮助。
编辑:字符串的长度也可以在“z”整数值之前和之后变化。
答案 0 :(得分:1)
<?php
preg_match('/(?<=z)\d+/', 'x-y12h-z13-1', $matches);
var_dump($matches[0]);
将一个或多个数字与前面的z匹配。 http://codepad.viper-7.com/X5mu2m
答案 1 :(得分:0)
这完全取决于源字符串结构的“稳定”程度。您可以在开始http://php.net/substr结合substr()
http://php.net/strstr
strstr()
答案 2 :(得分:0)
您也可以使用字符串函数来提取它,这是示例:
$ a ='x-y12h-z13-1'; echo substr(strstr($ a,'z'),1,strrpos(strstr($ a,'z'),' - ') - 1);
答案 3 :(得分:0)
如果&#34; z&#34;是非常稳定的价值 然后
$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];
答案 4 :(得分: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
)
答案 5 :(得分:0)
此代码应该适合您
$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。
答案 6 :(得分:0)
$your_integer = (int)substr($str, strpos($str, "z") + 1);
这会找到第一个z然后关闭字符串,包括z。
然后我依靠PHP的转换行为来读取第一个字符,直到它找不到更多数字并将它们转换为整数。