2015-10-12 93 views
1

的字符串是:PHP的preg_match沒有找到文字

<div class="item-inner clearfix"> <div class="item-img have-additional clearfix"> <div class="cart-wrap"> <button title="Sәbәtә әlavә et" class="btn-cart" onclick="setLocation('https://az.from.ae/az/checkout/cart/add/uenc/aHR0cHM6Ly9hei5mcm9tLmFlL2F6L2NhdGFsb2dzZWFyY2gvcmVzdWx0L2luZGV4Lz9xPWlwaG9uZSs1cysxNitnYiZjYXQ9MzkmZGlyPWFzYyZvcmRlcj1wcmljZSZsaW1pdD0yNA,,/product/412/form_key/XUXNITbPm6bBkzTQ/')" data-toggle="tooltip" data-original-title="Sәbәtә әlavә et">Sәbәtә әlavә et</button> </div> <div class="item-img-info"> <a href="https://az.from.ae/az/apple-iphone-5s-16-gb-4g-lte-wi-fi-space-gray" title="Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray)" class="product-image"> <span class="img-main"> <img width="270" height="270" src="https://az.from.ae/media/product/78d/apple-iphone-5s-16-gb-4g-lte-wi-fi-space-gray-buy-apple-iphone-5s-cbf.jpg" alt="Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray)"/> </span> </a> </div> </div> <div class="item-info"> <div class="info-inner"> <div class="item-title"> <a href="https://az.from.ae/az/apple-iphone-5s-16-gb-4g-lte-wi-fi-space-gray" title="Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray)"> Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) </a> </div> <div class="item-content"> <div class="item-price"> <div class="price-box"> <span class="regular-price" id="product-price-4128672363671444684686"> <span class="price">AZN 522</span> </span> </div> </div> <p class="no-rating"><a href="https://az.from.ae/az/apple-iphone-5s-16-gb-4g-lte-wi-fi-space-gray/reviews/#review-form">Rəyinizi bildirin</a></p> </div> </div> </div></div> 

我的字符串也可以是這樣的:

<div class="item-inner clearfix"> <div class="item-img have-additional clearfix"> <div class="cart-wrap"> <span class="btn-cart availability out-of-stock"><span>Out of stock</span></span> </div> <div class="item-img-info"> <a href="https://az.from.ae/az/apple-iphone-5s-64-gb-4g-lte-wi-fi-gold" title="Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold)" class="product-image"> <span class="img-main"> <img width="270" height="270" src="https://az.from.ae/media/product/d3e/apple-iphone-5s-64-gb-4g-lte-wi-fi-gold-buy-apple-iphone-5s-2dd.jpg" alt="Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold)"/> </span> </a> </div> </div> <div class="item-info"> <div class="info-inner"> <div class="item-title"> <a href="https://az.from.ae/az/apple-iphone-5s-64-gb-4g-lte-wi-fi-gold" title="Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold)"> Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) </a> </div> <div class="item-content"> <div class="item-price"> <div class="price-box"> <span class="regular-price" id="product-price-4166746673391444684602"> <span class="price">AZN 633</span> </span> </div> </div> <p class="no-rating"><a href="https://az.from.ae/az/apple-iphone-5s-64-gb-4g-lte-wi-fi-gold/reviews/#review-form">Rəyinizi bildirin</a></p> </div> </div> </div></div> 

而且我的代碼是:

preg_match('/" title="(.*?)">/mis', $product, $names); 

WHI它不返回蘋果iPhone 5S(16 GB,4G LTE + Wi-Fi,太空灰)

+0

這是[用正則表達式解析HTML不是一個好主意](http://stackoverflow.com/a/1732454/2370483)。考慮[DOMDocument](http://php.net/manual/en/class.domdocument.php)而不是 – Machavity

+0

我相信要從HTML中提取信息,正則表達式比處理整個文檔以找到1〜 5行。 HTML解析器應該用於更復雜的操作,而不是像這樣簡單的搜索。 – GGG

回答

0

只需使用preg_match_all("/\" title=\"(.*?)\"/im", $html, $res)$res[1]將包含你在找什麼。
Result

Array 
(
    [0] => Array 
     (
      [0] => " title="Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray)" 
      [1] => " title="Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray)" 
      [2] => " title="Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold)" 
      [3] => " title="Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold)" 
     ) 

    [1] => Array 
     (
      [0] => Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) 
      [1] => Apple iPhone 5S (16 GB, 4G LTE + Wi-Fi, Space Gray) 
      [2] => Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) 
      [3] => Apple iPhone 5S (64 GB, 4G LTE + Wi-Fi, Gold) 
     ) 

) 

,我建議你使用http://regexr.com/來測試你的正則表達式。

0

嘗試這種模式preg_match('#title="([^"]*)"#', $product, $names);

$names[1]將包含你所需要的

而且 - 這應該幫助你調試這種事情

https://regex101.com/

+0

我編輯了我的問題,請再次檢查。 $ product字符串可以是第一個或第二個。我需要獲得產品名稱 – user2398907

+0

Stas,沒有爲我工作 – user2398907

+0

preg_match('#title =「([^」] *)「#',$ product,$ names); - 試試這個代替 –