到目前为止,我有这个:
preg_replace("/[^a-zA-Z0-9\/!?\" \' :,.;><_ ]/", "",
html_entity_decode($text, ENT_QUOTES));
如果我使用链接中的其他字符串,那么效果很好
我怎么接受
<script></script> <iframe> <a href=""></a> http:// https://
?
答案 0 :(得分:0)
我过去曾使用RegEx做过很多项目,这里有一些我的疑问。
匹配&#34;每个&#34;链接页面。
$links = preg_match_all('#(?:<a\s+.*?href=[\'"]([^\'"]+)[\'"]\s*?.*?>((?:\s*(?!<\s*\/\s*a\s*>).\s*)*)<\s*\/\s*a\s*>)#i',$html,$patterns);
// $patterns[0] (array) will give you the full tag <a herf="" ...etc
// $patterns[1] (array) will give you the urls
您应该print_r($patterns)
确定实际数组的外观以及您希望如何使用它们。
要匹配<script>
代码(这实际上会找到完整的javascript块,这可能不是您要求的),但是您可以修改一些代码。
preg_match_all("#<\s*script[^>]*[^/]>(.*?)<\s*/\s*script\s*>#i",$html,$scripts);
要匹配<iframe>
,您可以使用此功能(匹配&#34; html中的每个&#34; iframe标记)
function html_iframe_tags($str)
{
$iframes = array();
$iframeSearch = preg_match_all('#(?:<iframe[^>]*)(?:(?:/>)|(?:>.*?</\s*iframe>))#i', $str, $rawiframes);
if (count($rawiframes[0])<1) return false;
for ($i = 0; $i < count($rawiframes[0]); $i++)
{
$iframes[$i]['tag'] = $rawiframes[0][$i];
preg_match_all('/src="([^"]*)"/i',$iframes[$i]['tag'], $iframesrc);
$iframes[$i]['src'] = (isset($iframesrc[1][0]) ? $iframesrc[1][0] : '');
preg_match_all('/\swidth="([^"]*)"/i',$iframes[$i]['tag'], $iframewidth);
$iframes[$i]['width'] = (isset($iframewidth[1][0]) ? $iframewidth[1][0] : '');
preg_match_all('/\sheight="([^"]*)"/i',$iframes[$i]['tag'], $iframeheight);
$iframes[$i]['height'] = (isset($iframeheight[1][0]) ? $iframeheight[1][0] : '');
}
return $iframes;
}
然后print_r()
结果并查看数组如何查找您的确切用法,此函数实际上确定的不仅仅是您的使用,例如宽度/高度等。但还包括src
寻找。
希望这些东西可以为你的项目提供方向。
这是一个在html中引用正则表达式的网站 http://www.the-art-of-web.com/php/parse-links/