2013-10-07 2 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

ваша строка неправильно, вы должны использовать что-то вроде this '$ 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

Смежные вопросы