如何在PHP中获取字符串的特定部分

时间:2013-04-15 18:14:52

标签: php regex string preg-match

我有一个遵循这种语法的变化字符串:x-y12h-z13-1

我希望能够使用PHP在“z”之后获取整数。在这个例子中它将是13.我不确定找出它的最佳方法,我在正则表达式上非常糟糕。

非常感谢任何帮助。

编辑:字符串的长度也可以在“z”整数值之前和之后变化。

7 个答案:

答案 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的转换行为来读取第一个字符,直到它找不到更多数字并将它们转换为整数。