需要提取從strats在「類型 - 」和「-id」結尾的字符串的信息PHP提取子字符串之前和一個字符串的字符後
IDlocationTagID-type-area-id-492
這裏是字符串,所以我需要提取值:從字符串區和492:
後「類型 - 」之前「-id」後「ID-」
需要提取從strats在「類型 - 」和「-id」結尾的字符串的信息PHP提取子字符串之前和一個字符串的字符後
IDlocationTagID-type-area-id-492
這裏是字符串,所以我需要提取值:從字符串區和492:
後「類型 - 」之前「-id」後「ID-」
這是你想要使用兩個爆炸的東西。
$str = 'IDlocationTagID-type-area-id-492';
echo explode("-id", explode("type-", $str)[1])[0]; //area
echo trim(explode("-id", explode("type-", $str)[1])[1], '-'); //492
小簡單的方法。
echo explode("type-", explode("-id-", $str)[0])[1]; // area
echo explode("-id-", $str)[1]; // 492
使用正則表達式:
preg_match("/type-(.*)-id-(.*)/", $str, $output_array);
print_r($output_array);
echo $area = $output_array[1]; // area
echo $fnt = $output_array[2]; // 492
太多爆炸了,但它把我推向了使用ArrayIterator的想法(+1) –
這個問題必須標記爲正則表達式。 –
您在preg_match中有錯誤。您的代碼串 「$ STR =「IDlocationTagID型區域-ID-492fdfgdgdg」 返回: 陣列( => \t型區域-ID-492fdfgdgdg => \t區域 => \t 492fdfgdgdg ) 但id必須是int –
$matches = null;
$returnValue = preg_match('/type-(.*?)-id/', $yourString, $matches);
echo($matches[1]);
可以使用的preg_match: 例如:
preg_match("/type-(.\w+)-id-(.\d+)/", $input_line, $output_array);
要檢查,你可能需要的服務:
附:如果函數的preg_match會過重,還存在另一種解決方案:
$str = 'IDlocationTagID-type-area-id-492';
$itr = new ArrayIterator(explode('-', $str));
foreach($itr as $key => $value) {
if($value === 'type') {
$itr->next();
var_dump($itr->current());
}
if($value === 'id') {
$itr->next();
var_dump($itr->current());
}
}
正則表達式沒有被標記,所以我只使用PHP。 –
也許你可以更多地優化這個表達式。 –
您可以用爆炸來獲取值:
$a = "IDlocationTagID-type-area-id-492";
$data = explode("-",$a);
echo "Area ".$data[2]." Id ".$data[4];
什麼你到目前爲止已經試過?發佈您的嘗試。 –