簡體   English   中英

查找包含各種html標簽PHP的字符串

[英]Find string with all sorts of html tags PHP

{
  "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
    },
    ]
}

當我試圖循環通過價格和preg_match為AK-47 |時,我有以下問題 黑色層壓板(嶄新出廠)它似乎找不到它

我使用了以下代碼

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

關於我做錯了什么的任何想法

任何幫助,將不勝感激

使用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

問題出在RegEx模式中, | ()是正則表達式。

你可以使用preg_quote

嘗試

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

代替

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

您也可以嘗試將正則表達式更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM