php正则去除js,PHP删除HTML中JS代码正则表达式

以前有分享过一个专用的过滤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 | \* *\

正则表达式

匹配

test.gif

不匹配

test.gif | test.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值