2014-02-22 71 views
2

我必須從舊站點分割出一塊HTML以存儲在數據庫中。我使用Node.js和jQuery插件來完成基本的分割,但有3個部分我不能分割。在javascript中分割HTML以存儲在數據庫中

1)一個產品ID,它位於一個url中。此ID在最後/之後開始,並且在以下之前停止 -

2)價格,從第一個開始;並停止「這第一後開始>與此字符串之前停止(空間)

3)的名稱,「項目列表」

我並沒有把人做我的工作對我來說,下面的」前,但我現在知道如何開始,找出如何爲這些情況提供正則表達式。也許向正確的方向推進就足夠了。

<a href="privateurl/2332/32322-product-name-blah"> 
<div> 
    <span>Product Name Blah item listing</span> 
    <div> 
     <span> 
      Our price:<br /> 
      &#36;0.25 USD 
     </span> 
    </div> 
</div> 
</a> 

它被簡化了一點,但是你可以把我需要的id,名字和價格分開。

+0

如果您可以提供實際的html示例或模擬它可能會幫助。 –

+0

沒有正則表達式的解決方案會好嗎? –

+0

我會在接下來的5分鐘內發佈一個例子,沒有使用正則表達式的解決方案會很好,但我認爲正則表達式會有最好的性能。 –

回答

1
var s = '<a href="privateurl/2332/32322-product-name-blah">\n\ 
<div>\n\ 
    <span>Product Name Blah item listing</span>\n\ 
    <div>\n\ 
     <span>\n\ 
      Our price:<br />\n\ 
      &#36;0.25 USD\n\ 
     </span>\n\ 
    </div>\n\ 
</div>\n\ 
</a>'; 

s.match(/\/([^/-]*)-(?!.*\/.*)/)[1] // => "32322" 
s.match(/;([^ ]+)/)[1]    // => "0.25" 
s.match(/>(.*?) item listing/i)[1] // => "Product Name Blah" 
+0

謝謝,看起來相當複雜。我試試看,看看它是否表現良好,當我完成時不適當地挑選答案。謝謝。 –

1

嘗試這種情況:

1)

var id = document.getElementsByTagName('a')[0].href; 
id = id.substr(id.lastIndexOf('/') + 1); 
id = id.substr(0, id.indexOf('-')); 

2)

var price = document.getElementsByTagName('span')[1].innerText; 
price = price.substr(price.indexOf('$') + 1); 
price = price.substr(0, price.indexOf(' ')); 

3)

var name = document.getElementsByTagName('span')[0].innerHTML; 
name = name.substr(name.indexOf('>') + 1); 
name = name.substr(0, name.indexOf(' item listing')); 
+0

謝謝,將嘗試它,並與正則表達式的答案做一些比較,並看看我將使用哪一個。在那之後,我會選擇一個答案。 –

+0

@SaifBechan請參閱更新的答案。我將代碼集成到了您特定的html標記中。我的答案將在這些標籤中動態設置值。只要在示例中使用html,只需將js代碼粘貼到頁面上即可提取正確的值。 –