2012-05-30 5 views
0

Я хочу удалить все HTML-коды, такие как " € á ... из строки, используя REGEX.Удалить HTML-коды из строки в PHP

Строка: "This is a string " € á &"

Выход Требуемый: This is a string

+5

[Как удалить специальные символы html?] (Http://stackoverflow.com/questions/657643/how-to-remove-html-special-chars). – s7anley

+0

Я новичок в регулярном выражении и хочу создать что-то, что будет индексировать слова с веб-страницы. –

+1

Поскольку вы просто хотите получить слова, почему бы не написать регулярное выражение, которое находит все слова (игнорируя что-либо с символами, отличными от a-z и определенной пунктуацией)? – Okonomiyaki3000

ответ

0
preg_replace('#&[^;]+;#', '', "This is a string " € á &"); 
0

Попробуйте это:

preg_replace('/[^\w\d\s]*/', '', htmlspecialchars_decode($string)); 

Хотя это может удалить некоторые вещи, которые вы не хотите удалить. Вам может потребоваться изменить регулярное выражение.

0
$str = preg_replace_callback('/&[^; ]+;/', function($matches){ 
    return html_entity_decode($matches[0], ENT_QUOTES) == $matches[0] ? $matches[0] : ''; 
}, $str); 

Это будет работать, но не лишит € так, что не является объектом в HTML 4. Если у вас есть PHP 5.4 вы можете использовать флаги ENT_QUOTES | ENT_HTML5, чтобы он правильно работать с HTML5 субъектами как €.

0

Если вы пытаетесь, чтобы полностью удалить объекты (т.е. не декодирования их), то попробуйте следующее:

$string = 'This is a string " € á &'; 

$pattern = '/&([#0-9A-Za-z]+);/'; 
echo preg_replace($pattern, '', $string); 
1

вы можете попробовать

$str="This is a string " € á &"; 
$new_str = preg_replace("/&#?[a-z0-9]+;/i",'',$str); 
echo $new_str; 

я надеюсь, что это может работать

DESC

& - starting with 
# - some HTML entities use the # sign 
?[a-z0-9] - followed by 
;- ending with a semi-colon 
i - case insensitive. 
Смежные вопросы