2013-10-07 56 views
1

在我的代碼,我得到它具有HTML標記,像這樣的字符串:去除多餘的「>」在字符串中PHP

$string = '<div style="width:100px;">ABC 1234 <span> Test string, testing this string</span></div>'; 

現在,我使用的preg_replace除去從上述字符串的樣式屬性

$string = preg_replace('/(<[^>]+) style=".*?"/i', '', $string); 

刪除樣式標籤後,我設法刪除樣式屬性,以便div標籤最終看起來像<div>。這個問題,我這樣做之後遇到的是,我現在的跨度結束標記之後得到過量>因此字符串看起來像現在這樣:

$string = '<div>ABC 1234 <span> Test string, testing this string</span> >  </div>'; 

我的問題是,爲什麼我突然得到一個exccess > ?是否有不同的正則表達式,我可以使用它將擺脫樣式屬性沒有額外的>出現?或者有什麼辦法可以得到這個?

我試着用str_replace函數兩次,像這樣:

$string = str_replace("\n", "", $string); 
$string = str_replace(">>", ">", $string); 

但是,這也不能工作。

我不想刪除HTML標籤,只是樣式部分。

+1

[避免使用正則表達式處理HTML(http://stackoverflow.com/a/3577662/19068) – Quentin

+1

您的字符串是不對的,你應該使用類似這個'$ string ='

ABC 1234 Test string, testing this string
'' – ncm

+1

什麼是您的完整替換代碼?不只是正則表達式。 – SmokeyPHP

回答

0

使用它,只有該字符串。

<?php 
$string = "<div style=\"width:100px;\">ABC 1234 <span> Test string, testing this string</span></div>"; 

$string = strip_tags($string,"<span>"); 

$string = "<div>".$string."</div>"; 
?> 

現在的字符串是:

<div>ABC 1234 <span> Test string, testing this string</span></div> 
+0

謝謝我會試試這個。也許我需要的只是斜槓。 – user1597438

0

我用這個

$string = '<div style="width:100px;">ABC 1234 <span> Test string, testing this string</span></div>'; 
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $string); 
die(htmlentities($output)) 

和輸出

<div>ABC 1234 <span> Test string, testing this string</span></div> 

,因爲你需要

+0

這正是我所做的,結果是多餘的「>」 – user1597438