2016-06-14 69 views
0

我嘗試在一個div返回一個數字,我想有 「01 55 33 44」文件獲取內容+預浸比賽

 <div data-phone="01 55 33 44" class="agency_phone "> 
    Phone 
    </div> 

我有嘗試:

$url = "myurl"; 
    $raw = file_get_contents($url); 
    preg_match('/<div data-phone="(.*)"class="agency_phone "/isU',$raw,$output); 
    echo $output[1]; 

我有沒有回報, somone有一個想法?

在此先感謝。

+0

請詳細說明你的代碼和問題,爲更好地理解。 –

+0

我盡我所能,只是我想檢索電話號碼。 – Jeed

+0

'data-phone =「([^」] +)「class' – splash58

回答

0

index.php文件有如下內容。

<?php 
    $url = "test.php"; 
    echo $raw = file_get_contents($url); 
    preg_match('/data-phone="(.*)" class/', $raw, $output); 
    echo $output[1]; 
?> 

等多種文件source.php具有HTML標籤。

<div data-phone="01 55 33 44" class="agency_phone "> 
    Phone 
</div> 

它將返回followig陣列

Array 
(
    [0] => data-phone="01 55 33 44" class 
    [1] => 01 55 33 44 
) 
+0

值得注意的是,基於正則表達式的解決方案通常需要維護以適應源HTML中的微小格式更改(只要想象它們交換數據-phone'和'class'或插入另一個屬性之間)當然他們總是會在邊緣情況下失敗 –

0

這是缺失的空間嗎?

[編輯]這裏 放滿文件的再生用 [/編輯]

這工作:

// file url.html 
<div data-phone="01 55 33 44" class="agency_phone "> 
    Phone 
    </div> 

和:

<?php 
// file test.php 
$raw = file_get_contents('url.html'); 
preg_match('/data-phone="(.*)" class/',$raw,$output); 
echo $output[1]; // 01 55 33 44 
+0

感謝您的幫助Paul,但沒有返回,空白頁面。 – Jeed

+0

在頁面上返回NULL – Jeed

+0

我更新了示例以包含您需要測試的所有內容 – pauledenburg

0

與本地主機上的HTML文件測試,似乎很好地工作。

<?php 
$url = "myurl"; 
$subject = file_get_contents($url); 
$pattern='<div data-phone="(.*)" class="agency_phone ">'; 
preg_match($pattern, $subject, $output); 
echo $output[1];  
?> 
1

首先,你的正則表達式期望的是屬性後零個空間,因此不會與一個空格您的實際HTML匹配:

/<div data-phone="(.*)"class="agency_phone " 
<div data-phone="01 55 33 44" class="agency_phone "> 

在它很難編寫任何情況下,一個體面的HTML分析器從頭開始使用正則表達式。最簡單的方法是DOM和XPath,例如:

<?php 

$html = ' 
    <div data-phone="01 55 33 44" class="agency_phone "> 
    Phone 
    </div> 
    <p>Unrelated</p> 
    <div>Still unrealted</div> 
     <div data-phone="+34 947 854 712" class="agency_phone "> 
      Phone 
      </div> 

'; 

$dom= new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
$phones = $xpath->query('//div/@data-phone'); 
foreach ($phones as $phone) { 
    var_dump($phone->value); 
} 
string(11) "01 55 33 44" 
string(15) "+34 947 854 712" 
+0

哇謝謝!作品像一個魅力! – Jeed

+0

@ÁlvaroGonzález如果我希望得到數據電話的具體類別? – SML

+0

// div [@ class =「classname」]/@ data-phone – splash58