2013-08-27 21 views
0

我有一個關於DOM文檔如何操作字符串在PHP

在我以前的一個questoin問題.. How to detect certain characters and wrap them with another string?

我可以得到分配表的字符串。不過,也有包含

<input type='text' value='input value'/> 

所以它就像

<td><input type='text' value='input value'/></td> 

我想刪除input標籤,但仍顯示在我的單元格中'input value'因爲沒有輸入框的一些表格單元格。我需要它,因爲我需要在我的電子郵件中顯示我的字符串。

我真的不能在客戶端做到這一點。

有沒有辦法做到這一點?謝謝。

+1

爲什麼你不能做到這一點在客戶端?這對於JavaScript/JQuery來說非常簡單 – imulsion

+1

@imulsion聽起來這是一個電子郵件,所以javascript不會很有用。 –

回答

2

您可以提取使用DomDocument和適當XPath輸入值:

$html = "<td><input type='text' value='input value'/></td>"; 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 

$inputtags = $xpath->query('//input[@type="text"]'); 
foreach ($inputtags as $tag) { 
    $value = $tag->getAttribute('value'); 
} 

輸出:

input value 

注:這裏使用的XPath只是爲了演示的目的。可能有多個輸入類型爲text的元素,使用更穩定的XPath可能是一個好主意。但是,這應該讓你開始。

Demo!

+0

感謝Amal,我如何獲得新的$值保存回原始的HTML?我的html不像這裏那麼簡單。我正在考慮saveHTML(),但不知道從哪裏開始。謝謝。 +1 – FlyingCat

+0

@FlyingCat:上面的代碼允許您從HTML中提取輸入元素的值。該值將存儲在'$ value'中,您可以輸出您的HTML,就像我在演示中所做的一樣。但是,如果你想要這樣做的DOM方式,然後使用['replaceChild'](http://php.net/manual/en/domnode.replacechild.php)和/或['removeChild']( http://php.net/manual/en/domnode.removechild.php) –