2016-05-22 8 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 
    }, 
    ] 
} 

Ich habe das folgende Problem, wenn ich versuche, durch die Preise und preg_match für AK-47 | Schwarz Laminat (Fabrik neu) scheint es tut zu finden, esSuche String mit allen Arten von HTML-Tags PHP

Ive den folgenden Code verwendet

$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>'; 

Alle Ideen, was ive falsch getan

Jede mögliche Hilfe

Antwort

1

Verwenden preg_quote Funktion Sonderzeichen in einem String innerhalb RegexMuster verwendet zu entkommen:

$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>"; 
     } 
    } 
} 

Der Ausgang:

market_hash_name 
AK-47 | Black Laminate (Factory New) 

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

0

Problem erkannt werden, ist in RegEx Muster, | und () sind Regex Characheter.

können Sie preg_quote verwenden

Versuchen

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

statt

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

und auch können Sie versuchen, Ihre Regex ändern:

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

Gibt es Weise, die/der Variablen $ Artikel programmatisch hinzufügen? – user3280648

+0

@ user3280648 ja verwenden 'preg_quote' – zhilevan