2016-05-22 5 views
3
{ 
    "status" : "success", 
    "prices" : [ 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Battle-Scarred)", 
     "price" : "9.77", 
     "created_at" : 1463806291 
    }, 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Factory New)", 
     "price" : "38.51", 
     "created_at" : 1463822081 
    }, 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Field-Tested)", 
     "price" : "17.8", 
     "created_at" : 1463811694 
    }, 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Minimal Wear)", 
     "price" : "26.0", 
     "created_at" : 1463823062 
    }, 
    { 
     "market_hash_name" : "AK-47 | Aquamarine Revenge (Well-Worn)", 
     "price" : "12.9", 
     "created_at" : 1463832713 
    }, 
    { 
     "market_hash_name" : "AK-47 | Black Laminate (Battle-Scarred)", 
     "price" : "6.36", 
     "created_at" : 1463832092 
    }, 
    { 
     "market_hash_name" : "AK-47 | Black Laminate (Factory New)", 
     "price" : "93.0", 
     "created_at" : 1463800517 
    }, 
    ] 
} 

価格はループし、AK-47のpreg_matchをループすると次の問題が発生します。それはように見えるdoes notのブラックラミネート(ファクトリーニュー)は、すべての種類のhtmlタグを含む文字列を検索するPHP

アイブ氏は

$data = json_decode($json,true); 
$prices = $data['prices']; 
echo '<pre>'; 
$item = 'AK-47 | Black Laminate (Factory New)'; 
foreach($prices as $items){ 
    foreach($items as $key=>$value){ 
     if(preg_match("/".$item."/i",$value)){ 
      echo $key."<br>"; 
      echo $value."<br>"; 
     } 
    } 
} 
echo '</pre>'; 

任意のアイデアアイブが

答えて

1

使用:

あなたは

if (preg_match("/". preg_quote($item) ."/i", $value)) { 

代わり

if(preg_match("/".$item."/i",$value)){ 

を試してみても、あなたがあなたの正規表現を変更してくださいすることができますpreg_quote

を使用することができます正規表現パターン内で使用される文字列内の特殊文字をエスケープする機能:

$data = json_decode($json,true); 
$prices = $data['prices']; 

$item = 'AK-47 | Black Laminate (Factory New)'; 
foreach ($prices as $items){ 
    foreach ($items as $key => $value){ 
     if (preg_match("/". preg_quote($item) ."/i", $value)) { 
      echo $key."<br>"; 
      echo $value."<br>"; 
     } 
    } 
} 

出力:

market_hash_name 
AK-47 | Black Laminate (Factory New) 

http://php.net/manual/en/function.preg-quote.php

0

問題をいただければ幸い間違っ

任意の助けをやって何に次のコードを使用見つけるためにRegExパターンの場合、|()は正規表現です。

$item = 'AK-47 \| Black Laminate \(Factory New\)'; 
+0

をプログラム変数$項目にそれらの/を追加する方法はありますか? – user3280648

+0

@ user3280648はい 'preg_quote'を使用してください – zhilevan

関連する問題