Перевод vbScript в PHP: регулярное выражение для удаления тегов HTML - PullRequest
0 голосов
/ 08 июля 2011

Я перевожу функцию из классического ASP (vbscript) в PHP. Я сделал попытку, но не уверен, что мой код верен, поэтому я хотел бы спросить других.

Функция vbscript ниже содержит регулярное выражение для удаления тегов html. (Регулярное выражение взято из http://regexplib.com). Вот код vbScript для перевода:

Function StripTags(ByVal szString,ByVal szTags)
If szTags = "" Then szTags = "[a-zA-Z]+"
Dim regEx : Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
' tag to remove (based on http://regexplib.com/REDetails.aspx?regexp_id=211)
regEx.Pattern = "</?("+szTags+")(\s+\w+=(\w+|""[^""]*""|'[^']*'))*\s*?/?>"
StripTags = regEx.Replace(szString, "")
Set regEx = Nothing
End Function

Я обнаружил, что в PHP есть встроенная функция strip_tags ($ szString). Эта функция делает то же самое, что и код выше?

Я также нашел более сложную функцию удаления PHP HTML на этой доске, но я не уверен, что она делает то же самое:

function StripTags($szString,$szTags){
$szString = preg_replace(
array(
// Remove invisible content
'@<head[^>]*?>.*?</head>@siu', 
'@<style[^>]*?>.*?</style>@siu',
'@<script[^>]*?.*?</script>@siu',
'@<object[^>]*?.*?</object>@siu',
'@<embed[^>]*?.*?</embed>@siu',
'@<applet[^>]*?.*?</applet>@siu',
'@<noframes[^>]*?.*?</noframes>@siu',
'@<noscript[^>]*?.*?</noscript>@siu',
'@<noembed[^>]*?.*?</noembed>@siu',
// Add line breaks before and after blocks
'@</?((address)|(blockquote)|(center)|(del))@iu',
'@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
'@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
'@</?((table)|(th)|(td)|(caption))@iu',
'@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
'@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
'@</?((frameset)|(frame)|(iframe))@iu',),
array(
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
"\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0", "\n\$0",
"\n\$0", "\n\$0",
),
$szString );
$szString = strip_tags( $szString);
return;}

Может кто-нибудь сказать мне, выполняет ли приведенная выше функция PHP то же самое, что и функция VBscript?

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

FWIW, strip_tags() можно настроить для исключения определенных тегов, передав массив в качестве второго параметра.Тем не менее, вы никогда не сможете точно проанализировать HTML с помощью регулярных выражений, и вам, в конечном счете, будет лучше с расширением HTML Tidy.

Редактировать: А, вот еще одна ссылкаискал: HTML Purifier

0 голосов
/ 08 июля 2011

Я думаю, вы могли бы просто изменить PHP-разделители, чтобы включить ASP VBSCRIPT.Возможно, лучше не переводить классическую страницу asp, а попытаться установить классическую поддержку asp на Apache.

Есть ли веская причина для переключения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...