2015-05-12 48 views
0

我想分割文本< li>和</li>標記內容並顯示到textarea中。使用PHP獲取特定標記之間的值GetBetween

我的數據庫值保存在以下格式

<ul> 
    <li>Test1</li> 
    <li>Test2</li> 
    <li>Test3</li> 
    <li>Test3</li> 
</ul> 

我想在利<之間抓取每個值>和在一個textarea </LI>和顯示。 (最多隻有4個文本區域)。

<?php 
$sql="SELECT * FROM product_name"; 
$result=mysql_query($sql) or die(mysql_error());   
$row = mysql_fetch_array($result); 

function GetBetween($value1="",$value2="",$dbvalue){ 
$temp1 = strpos($pool,$value1)+strlen($value1); 
$result = substr($dbvalue,$temp1,strlen($dbvalue)); 
$dd=strpos($result,$value2); 
if($dd == 0){ 
$dd = strlen($result); 
} 

return substr($result,0,$dd); 
?> 


<textarea name="description1"> 
<?php echo GetBetween("<li>","</li>",$row['description']);?> 
</textarea> 

<textarea name="description2"></textarea> 
<textarea name="description3"></textarea> 
<textarea name="description4"></textarea> 

在我的第一個Textarea數據庫中取值。但我不知道如何顯示2,3和4每個值到各自的Textares。

我期待下面的輸出:

<textarea name="description1">Test1</textarea> 
<textarea name="description2">Test2</textarea> 
<textarea name="description3">Test3</textarea> 
<textarea name="description4">Test4</textarea> 

請幫助我。由於

+1

想過用[DOM文檔(http://php.net/manual/ en/class.domdocument.php)或[SimpleXML](http://php.net/manual/en/simplexml.examples-basic.php)?兩者都應該能夠處理XHTML標籤。 – Devon

+0

先生,我是PHP初學者。第一次聽說DOMDocument或SimpleXML。只是閱讀它。謝謝 – user2594154

+0

我剛剛意識到你在存儲數據庫中的HTML。你應該停止這樣做。 – Devon

回答

0

我建議一個例子:

<?php 
$str = "<ul> 
    <li>Test1</li> 
    <li>Test2</li> 
    <li>Test3</li> 
    <li>Test3</li> 
</ul>"; 

preg_match_all('/<li ?.*>(.*)<\/li>/',$str,$matches); 

if(!empty($matches[1])){ 
    foreach($matches[1] as $key=>$text){ 
     echo '<textarea name="description'.($key+1).'">'.$text.'</textarea>'; 
    } 
} 
} 
+0

@ CaHuyuh:在這個例子中它工作正常。但是,當數據庫值存儲在$ str時,它將不起作用。它將用作html。 – user2594154

+0

如果從數據庫獲取數據,可以將字符串存儲在如下緩衝塊中:$ str = <<< EOF內容在這裏.... EOF;或者使用php helper函數,如mysql_real_escape_string或html_entity_decode – CaHuynh

1

這裏有一個簡單的例子,應該讓你開始:

<?php 

$html = <<<HTML 
<ul> 
    <li>Test1</li> 
    <li>Test2</li> 
    <li>Test3</li> 
    <li>Test3</li> 
</ul> 
HTML; 

$doc = new DOMDocument; 
$doc->loadHTML($html); 

$id = 1; 
// find all <li> elements 
foreach ($doc->getElementsByTagName('li') as $element) { 
    // then print <textarea> elements 
    printf('<textarea name="description%d">%s</textarea>', 
     $id++, 
     htmlspecialchars($element->nodeValue) 
    ); 
} 
相關問題