2013-04-15 67 views
0

我有一个语法如下变化的字符串:X-y12h-z13-1如何得到一个字符串的特定部分在PHP

我希望能够只得到整数“Z”后使用PHP。在这个例子中,它会是13.我不确定解决这个问题的最好方法,而且我在正则表达式上真的很糟糕。

任何帮助,非常感谢。

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

+0

$ num =(int)substr($ str,-4,3)在这种情况下会给你13个,但是如果字符串不固定并且每次都改变到不同的长度,那么你需要提供给我们更多的信息。 –

+2

你应该真的给出更多的字符串样本,以及准确的规则是什么才能得到一个体面的答案。 – PeeHaa

回答

0

这一切都取决于源字符串结构的“稳定”。您可以在与strstr()http://php.net/strstr

+0

我曾考虑过这个问题,但字符串可以在“z”整数值之前和之后变化。 – thomaskessel

+0

字符串长度可以更改的信息不在您的原始问题中。 –

0

您可以使用字符串函数也提取它,这里是例如:

$一个= '的x y12h-z13-1'; (strstr($ a,'z'),1,strrpos(strstr($ a,'z'),' - ') - 1);

0

如果 “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]; 
0

一般的正则表达式为你的字符串:

<?php 

$value = preg_match('/^x-y(\d+)h-z(\d+)-(\d+)/','x-y12h-z13-1', $matches); 
print_r($matches); 

$匹配[2]包含'z'后的值

输出:

Array 
(
    [0] => x-y12h-z13-1 
    [1] => 12 
    [2] => 13 
    [3] => 1 
) 
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; 

$海峡将有你的字符串输出13

0
$your_integer = (int)substr($str, strpos($str, "z") + 1); 

此发现的第一个Z和然后剪切该字符串关闭,包括z。

然后,我依靠PHP的铸造行为读取第一个字符,直到它找不到更多数字并将它们转换为整数。

相关问题