2015-12-18 58 views
0

我使用的是簡單的DOM HTML解析器PHP腳本在什麼似乎是一個簡單的方法,這裏是我的代碼:PHP和簡單DOM HTML解析器 - 更換相同的文本字符串

include('simple_html_dom.php'); 

$html = file_get_html($_SERVER['DOCUMENT_ROOT']."/wp-content/themes/genesis-sample-develop/cache-reports/atudem.html"); 

$snow_depth_min = $html->find('td', 115); 
$snow_depth_max = $html->find('td', 116); 
$snow_type = $html->find('td', 117); 

問題是與$ snow_type。有時解析的文本字符串是'polvo',有時候是'polvo-dura'。我試圖用'powder'替代'polvo',用'粉末/粉末'替換'polvo-dura'。如果我這樣做

if ($snow_type->innertext=='polvo-dura') { 
    $snow_type->innertext('powder'); 
} 

$snow_type = str_replace("polvo", "powder", $snow_type); 
$snow_type = str_replace("polvo-dura", "powder/packed", $snow_type); 

它像「粉硬腦膜」和奇怪的事情一樣的結果結束。

顯然我是新來的PHP,所以對我有一些耐心;)我也想知道爲什麼發生這種情況,爲什麼可能的解決方案將工作。

在此先感謝

回答

0

臨時解決方案,使用索引陣列與了preg_replace():

$patterns = array(); 
    $patterns[0] = '/-/'; 
    $patterns[1] = '/polvo/'; 
    $patterns[2] = '/dura/'; 
    $replacements = array(); 
    $replacements[0] = '/'; 
    $replacements[1] = 'powder'; 
    $replacements[2] = 'packed'; 

    $snow_type_spanish_english = preg_replace($patterns, $replacements, $snow_type); 

我怎麼會在現實世界的長期複雜的文本工作的嚴重關切,但對於諸如'a','b','a/b'或'b/a'等值的'雪型'這樣的短型數據,這可以很好。

如果有人提供更好的解決方案,那將會很棒。我一直在搜索整個互聯網幾天,並沒有找到任何具體解決方案的文字值在開始時用相同的單詞,例如「粉末」和「粉末包裝」。

1
if ($snow_type->innertext=='polvo-dura') { 
    $innertext = 'powder/packed'; 
} else if ($snow_type->innertext=='polvo') { 
    $innertext = 'powder'; 
} 
+0

感謝您的回答克里希納,我也試過這個,並認爲這是明顯的正確的解決方案,但它什麼都不做。它應該,但不是。以$ snow_type爲'polvo-dura',它就表明了這一點,忽略了'if'語句。 – Karls