以前有分享过一个专用的过滤html标签的php函数了,但给很多人转载了最近搜索了一下发现有些问题,现在我只要过滤js代码了,下面来看一个正则过滤吧。
js代码正则
代码如下
复制代码
'si", // 去掉 javascript
起初使用,m代表多行匹配,测试多次单行可以替换,多行没效果。
代码如下
复制代码
preg_replace('//m', '', $html);
原来.不匹配换行,添加s修饰符正常:
代码如下
复制代码
preg_replace('//ms', '', $html);
例子 利用tidy_parse_file工具
代码如下
复制代码
$options = array("indent" => true,
"indent-spaces" => "4",
"wrap" => 4096);
$tidy = tidy_parse_file("/edit-table.html", $options);//此处改成你要处理的文档URL
tidy_clean_repair($tidy);
echo $tidy;
?>
今天在一个群里看到一个站长在问如何把一段字符串中指定两个字符串这间的内容提取出来,这个我是想用于做文章分页标签了,但后来测试多个标题此方法暂时不行,单个撮是没有问题的。
例子,
代码如下
复制代码
$fcontents ="fdsafdafdsa{page}中国要呀{/page}dafdsafdsafdsafdsa";
if(eregi("{page}(.*){/page}", $fcontents,$regs)){
//echo "成功";
//print_r($regs);
echo $regs[1];
}
else{
echo "失败";
}
exit;
?>
输出结果
中国要呀
那么我们如果测试放多个标签会怎么样呢
代码如下
复制代码
$fcontents ="fdsafdafdsa{page}中国要呀{/page}dafdsafdsafdsafdsa{page}你好中国{/page}fdsafdsafsda{page}我爱中国{/page}fdafdsa";
if(eregi("{page}(.*){/page}", $fcontents,$regs)){
//echo "成功";
//print_r($regs);
echo $regs[1];
}
else{
echo "失败";
}
exit;
?>
输出结果
中国要呀{/page}dafdsafdsafdsafdsa{page}你好中国{/page}fdsafdsafsda{page}我爱中国
发现这个闭合会有问题了,暂时还没想到办法。
下面来给大家分享一个正则神器 VerbalExpressionsPhp使用例子,有兴趣的同学不防进入参考一下吧。
该类库是jehna/VerbalExpressions的php版本。
这货的竟然通过链式方法把正则给语义化了。。。我表示很愤慨啊。。。
安装
代码如下
复制代码
加入composer.json
{
"require": {
...,
"markwilson/VerbalExpressionsPhp": "dev-master"
}
}
使用
代码如下
复制代码
require_once 'vendor/autoload.php';
use MarkWilson\VerbalExpression;
use MarkWilson\VerbalExpression\Matcher;
// 初始化VerbalExpression实例
$verbalExpression = new VerbalExpression();
// URL地址匹配
$verbalExpression->startOfLine()
->then('http')
->maybe('s')
->then('://')
->maybe('www.')
->anythingBut(' ')
->endOfLine();
// 编译表达式 - 返回: ^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$
$verbalExpression->compile();
// 执行匹配
preg_match($verbalExpression, 'http://www.111cn.net'); // 返回 1
// 或
$matcher = new Matcher();
$matcher->isMatch($verbalExpression, 'http://www.google.com'); // 返回 true
嵌套表达式
代码如下
复制代码
$innerExpression = new VerbalExpression();
$innerExpression->word();
$outerExpression = new VerbalExpression();
$outerExpression->startOfLine()
->find($innerExpression)
->then($innerExpression)
->endOfLine();
// 返回 ^(\w+)(\w+)$
$outerExpression->compile();
禁用子模式捕获
默认情况下,子匹配规则可以被获取,并返回匹配的数组。
代码如下
复制代码
// 禁用获取子匹配规则
$verbalExpression->disableSubPatternCapture()->word(); // (?:\w+)
// 或
$verbalExpression->word(false); // (?:\w+)
这样做只会影响后续增加的表达式;任何已经添加的匹配规则不会受到影响。这里允许禁用和启用组。
代码如下
复制代码
// 相当于 (\w+)(?:\w+)(?:\w+)(\w+)
$verbalExpression->word()
->disableSubPatternCapture()
->word()
->word()
->enableSubPatternCapture()
->word();
自己写了一个匹配图片路径的正则,总是有点不兼容,有些图片的路径获取不到,在网上找了半天,总算找到一个完美的。
例子
代码如下
复制代码
$preg = "//i";
preg_match_all($preg,$str,$res);
这下子,管用多了,不管怎样的代码结构,都能顺利的匹配出图片的路径。
例子
代码如下
复制代码
$str='
';$pattern="//";
preg_match_all($pattern,$str,$match);
print_r($match);
最后总结一个下载远程图片地址
代码如下
复制代码
/**
* 提取字符串中图片url地址
* @param type $str
* @return type
*/
function getimgs($str) {
$reg = '/((http|https):\/\/)+(\w+\.)+(\w+)[\w\/\.\-]*(jpg|gif|png)/';
$matches = array();
preg_match_all($reg, $str, $matches);
foreach ($matches[0] as $value) {
$data[] = get_file($value);
}
return $data;
}
下面整理的正则匹配html标签的例子都是在网上找了,不过这一篇是非常的全面的并且包括了html中各种标签了,具体有多少我不说我可以告诉你所有的html都可以匹配出来哦。 正则表达式
]*>.*?\1>|<.>
匹配
hello|abcd
不匹配
abc|123|ddd
正则表达式
^[^<>`~!/@\#}$%:;)(_^{&*=|'+]+$
匹配
This is a test
不匹配
| That's it
正则表达式
<!--.*?-->
匹配
<!-- <h1>this text has been removed</h1> --> | <!-- yada -->
不匹配
<h1>this text has not been removed</h1>
正则表达式
(\[(\w+)\s*(([\w]*)=('|")?([a-zA-Z0-9|:|\/|=|-|.|\?|&]*)(\5)?)*\])([a-zA-Z0-9|:|\/|=|-|.|\?|&|\s]+)(\[\/\2\])
匹配
[link url="http://www.domain.com/file.extension?getvar=value&secondvar=value"]Link[/li
不匹配
[a]whatever[/b] | [a var1=something var2=somethingelse]whatever[/a] | [a]whatever[a]
正则表达式
href=[\"\'](http:\/\/|\.\/|\/)?\w+(\.\w+)*(\/\w+(\.\w+)?)*(\/|\?\w*=\w*(&\w*=\w*)*)?[\"\']
匹配
href="www.yahoo.com" | href="http://localhost/blah/" | href="eek"
不匹配
href="" | href=eek | href="bad example"
正则表达式
"([^"](?:\\.|[^\\"]*)*)"
匹配
"This is a \"string\"."
不匹配
"This is a \"string\".
正则表达式
(?i:on(blur|c(hange|lick)|dblclick|focus|keypress|(key|mouse)(down|up)|(un)?load|mouse(move|o(ut|ver))|reset|s(elect|ubmit)))
匹配
onclick | onsubmit | onmouseover
不匹配
click | onandon | mickeymouse
正则表达式
(?s)/\*.*\*/
匹配
/* .................... */ | /* imagine lots of lines here */
不匹配
*/ malformed opening tag */ | /* malformed closing tag /*
正则表达式
]*>.*?\1>|<.>
匹配
hello|abcd
不匹配
abc|123|ddd
正则表达式
\xA9
匹配
©
不匹配
anything
正则表达式
src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\')
匹配
src="../images/image.jpg" | src="http://domain.com/images/image.jpg" | src='d:\w
不匹配
src="../images/image.tif" | src="cid:value"
正则表达式
/\*[\d\D]*?\*/
匹配
/* my comment */ | /* my multiline comment */ | /* my nested comment */
不匹配
*/ anything here /* | anything between 2 seperate comments | \* *\
正则表达式
匹配
不匹配
|