2014-12-02 161 views
0

我使用simple_html_dom.php使用Simpe HTML獲取Textarea值Dom Dom

如何獲取textarea值如果網站使用了錯誤的標記。

textarea標記已經像輸入標記一樣在</textarea>之前關閉。

textarea的HTML象下面這樣:

<textarea name="xxx" id="xxx" />this is value</textarea> 

當我使用這個功能,我沒有得到任何

$textarea = $html->find("textarea[name=xxx]"); 
$contents = $textarea->innertext; 
echo $contents; 

如何讓 '這是值' 使用simple_html_dom.php或其他選擇嗎?

謝謝

+0

'找到( 「路徑」,$ N)'返回一個DOM元素數組或者第N個元素,如果索引'$ N'被指定的話......所以在你的情況下,'$ html-> find(「textarea [name = xxx]」,0);'應該工作。 – Enissay 2014-12-02 11:35:13

回答

1

好了,我之前的評論也不會在這種情況下,與simple_html_dom解析它工作之前,我就講這些,雖然信息...

另一種方法是把它清理乾淨使用Tidy extension。但似乎也不在這裏工作......

最後一個方法,我能想到的,如果這是你唯一的問題的情況下,是使用正則表達式來得到你想要的東西:

  • 使用<textarea.*?name="xxx".*?id="xxx".*?\/>([^<]+)<\/textarea> ==>RegEx DEMO
  • 輸出結果將在結果數組$match的第一組中。檢查該工作代碼:

    $input = <<<_DATA_ 
    <textarea name="xxx" id="xxx" />this is value</textarea> 
    _DATA_; 
    
    $pattern = '/<textarea.*?name="xxx".*?id="xxx".*?\/>([^<]+)<\/textarea>/'; 
    
    preg_match($pattern, $input, $match); 
    var_dump($match) 
    

    Working DEMO

+0

很好的解決方案,很可能會完美地工作。我必須嘗試這個。謝謝你,先生 – Baron 2014-12-02 13:05:49

0

這是很容易得到javascript中的Teaxtarea的價值:

<script type=text/javascript> 

function getValueTextarea() 
{ 
    var vl=document.getElementById("tx").value; 
    alert(vl); 
} 

</script> 

<body> 
    <textarea id="tx">Value Of Textarea</textarea> 
    <input id="button" value="Get Value" onclick="getValueTextarea()"> 
</body>