Я хочу удалить все HTML-коды, такие как " € á ...
из строки, используя REGEX.Удалить HTML-коды из строки в PHP
Строка: "This is a string " € á &"
Выход Требуемый: This is a string
Я хочу удалить все HTML-коды, такие как " € á ...
из строки, используя REGEX.Удалить HTML-коды из строки в PHP
Строка: "This is a string " € á &"
Выход Требуемый: This is a string
preg_replace('#&[^;]+;#', '', "This is a string " € á &");
Попробуйте это:
preg_replace('/[^\w\d\s]*/', '', htmlspecialchars_decode($string));
Хотя это может удалить некоторые вещи, которые вы не хотите удалить. Вам может потребоваться изменить регулярное выражение.
$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 субъектами как €
.
Если вы пытаетесь, чтобы полностью удалить объекты (т.е. не декодирования их), то попробуйте следующее:
$string = 'This is a string " € á &';
$pattern = '/&([#0-9A-Za-z]+);/';
echo preg_replace($pattern, '', $string);
вы можете попробовать
$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.
[Как удалить специальные символы html?] (Http://stackoverflow.com/questions/657643/how-to-remove-html-special-chars). – s7anley
Я новичок в регулярном выражении и хочу создать что-то, что будет индексировать слова с веб-страницы. –
Поскольку вы просто хотите получить слова, почему бы не написать регулярное выражение, которое находит все слова (игнорируя что-либо с символами, отличными от a-z и определенной пунктуацией)? – Okonomiyaki3000