是否有可以提取字符串中兩個不同字符之間的短語的php函數?像substr();提取字符串中兩個字符之間的子字符串PHP
例子:
$String = [modid=256];
$First = "=";
$Second = "]";
$id = substr($string, $First, $Second);
因此$id
將256
任何幫助,將不勝感激:)
是否有可以提取字符串中兩個不同字符之間的短語的php函數?像substr();提取字符串中兩個字符之間的子字符串PHP
例子:
$String = [modid=256];
$First = "=";
$Second = "]";
$id = substr($string, $First, $Second);
因此$id
將256
任何幫助,將不勝感激:)
使用此代碼
$input = "[modid=256]";
preg_match('~=(.*?)]~', $input, $output);
echo $output[1]; // 256
正則表達式是你的朋友。
preg_match("/=(\d+)\]/", $String, $matches);
var_dump($matches);
這將匹配任何數字,其他值,你將不得不適應它。
您可以使用正則表達式:
<?php
$string = "[modid=256][modid=345]";
preg_match_all("/\[modid=([0-9]+)\]/", $string, $matches);
$modids = $matches[1];
foreach($modids as $modid)
echo "$modid\n";
$String = "[modid=256]";
$First = "=";
$Second = "]";
$Firstpos=strpos($String, $First);
$Secondpos=strpos($String, $Second);
$id = substr($String , $Firstpos, $Secondpos);
$str = "[modid=256]";
preg_match('/\[modid=(?P<modId>\d+)\]/', $str, $matches);
echo $matches['modId'];
(從評論感動,因爲格式化更容易在這裏)
可能是一種偷懶的做法,但在這種情況下,我通常會先爆炸我的字符串是這樣的:
$string_array = explode("=",$String);
,並在第二步我就會改掉的是「]」也許通過RTRIM:
$id = rtrim($string_array[1], "]");
...但是這僅工作,如果數據結構都完全相同......
-cheers-
PS:應該不會,它實際上是$字符串= 「[modid = 256]」;?
嘗試正則表達式
$String =" [modid=256]";
$result=preg_match_all('/(?<=(=))(\d+)/',$String,$matches);
print_r($matches[0]);
輸出
陣列([0] => 256)
說明 這裏它使用了正面看後面(? (?< =) 例如(?< = foo)bar前面有foo匹配條, here(?< =(=))(\ d +)我們匹配'='符號後面的(\ d +)。 \ d匹配任何數字字符(0-9)。 +匹配1個或更多的前述令牌
爲什麼你使用$ result變量? – 2016-05-26 05:44:13
您可以使用正則表達式,或者你可以試試這個的:
$String = "[modid=256]";
$First = "=";
$Second = "]";
$posFirst = strpos($String, $First); //Only return first match
$posSecond = strpos($String, $Second); //Only return first match
if($posFirst !== false && $posSecond !== false && $posFirst < $posSecond){
$id = substr($string, $First, $Second);
}else{
//Not match $First or $Second
}
你應該閱讀有關SUBSTR。最好的方式是正則表達式。
用途:
<?php
$str = "[modid=256]";
$from = "=";
$to = "]";
echo getStringBetween($str,$from,$to);
function getStringBetween($str,$from,$to)
{
$sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
return substr($sub,0,strpos($sub,$to));
}
?>
可以分爲兩個部分做到這一點:你首先得串從$ first開始,然後解析結果直到$ second字符。 – fedorqui 2013-02-15 09:37:22
你究竟想要捕捉什麼? id,字符串,=? – djjjuk 2013-02-15 09:38:42
在這種情況下,我通常喜歡炸開我的字符串:explode(「=」,$ String);在第二步我會擺脫那個「]」也許通過rtrim($ string,「]」); – tillinberlin 2013-02-15 09:39:43