常用正则表明式(PHP+JS)

js代码正则

对于一个有经验的 PHP Web
开发者,这是一件非常容易的事情。但是对于刚开始接触 PHP
编程语言的新手这就是一个问题。所以这里介绍如何在常规的 HTML 代码中嵌入
PHP 代码。

<?php
echo <<< EOT
<table width=80% border=”2″ cellpadding=”3″ cellspacing=”0″
bordercolor=”#808080″>
<tr bgcolor=”#84A9E1″>
<td align=”center”>ClassID</td>
<td align=”center”>stuno</td>
<td align=”center”>学生姓名</td>
<td align=”center”>家长姓名</td>
<td align=”center”>家长手机号</td>
</tr>
EOT;
?>

本文实例讲述了PHP正则删除HTML代码中宽高样式的方法。分享给大家供大家参考,具体如下:

我们在开发中经常会用到正则匹配来做一些简单的验证工作,正则表达式这东西一个人一个写法,临着要用再去自己想和写实在浪费时间,所以在这里罗列一些常用的正则表达式,在使用到的时候直接使用就好。话不多说上干货。

 代码如下

在常规的 HTML 中嵌入 PHP 代码

因工作需要,需要采集html,并把html内容保存到数据库中。为了避免影响使用,宽高样式需要删除。例如图片和div中的width,
height等。

1.匹配邮箱

PHP版:

$str  =  '';

$isMatch  =  preg_match('/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var pattern = /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,str = '';

console.log(pattern.test(str));

<script[^>]*?>.*?</script>’si”, // 去掉
javascript

创建一个 hello 脚本,命名为 hello.php:

不过采集到的html中,样式的写法各有不同,例如大小写,中间有空格等。

2.匹配手机号

PHP版:

$str  =  '';

$isMatch  =  preg_match('/(13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7}/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var pattern = /(13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7}/,
    str = '';

console.log(pattern.test(str));

起初使用,m代表多行匹配,测试多次单行可以替换,多行没效果。

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>

因此使用php正则编写了下面这个方法,对这些奇葩的样式进行过滤。

3.匹配中文

PHP版:

$str  =  '';

$isMatch  =  preg_match('/[\u4e00-\u9fa5]/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var pattern = /[\u4e00-\u9fa5]/,str = '';

console.log(pattern.test(str));

 代码如下

上面的 HTML 代码中,在 PHP 代码中打印 Hello。在 HTML 中编写 PHP
代码需要使用 <?php ?> tags。集成 PHP 和 HTML 是非常简单的事情。

代码如下:

4.匹配时间(格式为:时:分:秒)

PHP版本:

$str  =  '';

$isMatch  =  preg_match('/([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var pattern = /([01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d/,str = '';

console.log(pattern.test(str));

preg_replace(‘/<script.*?<\/script>/m’, ”, $html);

我们也可以在 HTML 中编写更复杂的 PHP 代码,需要使用 <?php tag and end
with ?> tag。

<?php
/**
 * 清除宽高样式
 * @param String $content 内容
 * @return String
 */
function clear_wh($content){
  $config = array('width', 'height');
  foreach($config as $v){
    $content = preg_replace('/'.$v.'\s*=\s*\d+\s*/i', '', $content);
    $content = preg_replace('/'.$v.'\s*=\s*.+?["\']/i', '', $content);
    $content = preg_replace('/'.$v.'\s*:\s*\d+\s*px\s*;?/i', '', $content);
  }
  return $content;
}
?>

5.匹配IPV4地址

PHP版:

$str  =  '';

$isMatch  =  preg_match('/(\d+)\.(\d+)\.(\d+)\.(\d+)/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var  pattern  =  /(\d+)\.(\d+)\.(\d+)\.(\d+)/,str  =  '';

console.log(pattern.test(str));

原来.不匹配换行,添加s修饰符正常:

更高级的代码示例:

演示:

6.匹配身份证

PHP版:

$str  =  '';

$isMatch  =  preg_match('/\d{15}|\d{17}[0-9Xx]/',  $str,  $match);

var_dump($isMatch,  $match);

JS版:

var  pattern  =  /\d{15}|\d{17}[0-9Xx]/,str  =  '';

console.log(pattern.test(str));

 代码如下

<html>
<head>PHP HTML Integration</head>
<body>
<ul> <?php for($i=1;$i<=5;$i++){ ?> <li>Item No <?php echo $i; ?></li> <?php } ?> </ul>
</body>
</html>
<?php
$html = <<<HTML
<div style="text-align:center" width="500" height="300">
  <div style="Width : 100px ; Height: 100 px;">
    <img src="/images/test.jpg" width=400 height = 200>
    <div style="float:left; width: 100px; height : 200 px;"></div>
  </div>
  <div style="width :  100 px ;height: 100px">
    <img src="/images/test.jpg" width=400 height = 200>
  </div>
</div>
HTML;
echo '<xmp>';
echo '原内容:'.PHP_EOL;
echo $html.PHP_EOL.PHP_EOL;
echo '过滤后内容:'.PHP_EOL;
echo clear_wh($html);
echo '</xmp>';
?>

7.匹配日期(格式:年-月-日)

PHP版:

$str = '';
$isMatch = preg_match('/((((1[6-9]|[2-9]\d)\d{2})-(1[02]|0?[13578])-([12]\d|3[01]|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-(1
    [012]|0?[13456789])-([12]\d|30|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(1\d|2[0-8]|0?[1-9]))|(((1[6-9]|[2-9]\d)(0[48]|
    [2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))/', $str, $match);
var_dump($isMatch, $match);

JS版:

var pattern = /((((1[6-9]|[2-9]\d)\d{2})-(1[02]|0?[13578])-([12]\d|3[01]|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-(1[012]|0?[13456789])-([12]\d|30|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(1\d|2[0-8]|0?[1-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))/,
    str = '';
console.log(pattern.test(str));

preg_replace(‘/<script.*?<\/script>/ms’, ”, $html);

输出结果:

输出:

8.匹配日期(格式:年/月/日)

PHP版:

$str = '';
$isMatch = preg_match('/((((1[6-9]|[2-9]\d)\d{2})\/(1[02]|0?[13578])\/([12]\d|3[01]|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})\/
    (1[012]|0?[13456789])\/([12]\d|30|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(1\d|2[0-8]|0?[1-9]))|(((1[6-9]|[2-9]\d)(0[
    48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))/', $str, $match);
var_dump($isMatch, $match);

JS版:

var pattern = /((((1[6-9]|[2-9]\d)\d{2})\/(1[02]|0?[13578])\/([12]\d|3[01]|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})\/(1[012]|0?[13456789])\/([12]\d|30|0?[1-9]))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(1\d|2[0-8]|0?[1-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))/,
    str = '';
console.log(pattern.test(str));

例子 利用tidy_parse_file工具

Item No 1
Item No 2
Item No 3
Item No 4
Item No 5
原内容:
<div style="text-align:center" width="500" height="300">
  <div style="Width : 100px ; Height: 100 px;">
    <img src="/images/test.jpg" width=400 height = 200>
    <div style="float:left; width: 100px; height : 200 px;"></div>
  </div>
  <div style="width :  100 px ;height: 100px">
    <img src="/images/test.jpg" width=400 height = 200>
  </div>
</div>

过滤后内容:
<div style="text-align:center" >
  <div style=" ">
    <img src="/images/test.jpg" >
    <div style="float:left; "></div>
  </div>
  <div style="">
    <img src="/images/test.jpg" >
  </div>
</div>

9.匹配正整数

PHP版:

$str = '';
$isMatch = preg_match('/[1-9]\d*/', $str, $match);
var_dump($isMatch, $match);

JS版:

var pattern = /[1-9]\d*/,
    str = '';
console.log(pattern.test(str));

 代码如下

以上所述就是本文的全部内容了,希望大家能够喜欢。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

10.匹配负整数

PHP版:

$str = '';
$isMatch = preg_match('/-[1-9]\d*/', $str, $match);
var_dump($isMatch, $match);

JS版:

var pattern = /-[1-9]\d*/,
    str = '';
console.log(pattern.test(str));

<?php
$options = array(“indent” => true,      
     “indent-spaces” => “4”,  
     “wrap” => 4096);       
$tidy = tidy_parse_file(“/edit-table.html”,
$options);//此处改成你要处理的文档URL
tidy_clean_repair($tidy);
echo $tidy;
?>

您可能感兴趣的文章:

  • 用PHP的超级变量$_POST获取HTML表单(HTML Form)
    数据
  • 用php解析html的实现代码
  • PHP批量生成静态HTML的简单原理和方法
  • 采用thinkphp自带方法生成静态html文件详解
  • php对包含html标签的字符串进行截取的函数分享
  • php获取从html表单传递数组的方法
  • php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
  • php实现将上传word文件转为html的方法
  • php基于Snoopy解析网页html的方法
  • HTML中嵌入PHP的简单方法

JavaScript正则表达式在线测试工具:

11.电驴链接(似乎看到了老司机的微笑)

PHP版:

$str = '';
$isMatch= preg_match('/ed2k:\/\/\|file\|([^\|]+?)\|(\d+?)\|([0-9a-zA-Z]{32})\|((?:\/\|sources,([^\s\|]+?)\||h=([0-9a-zA-Z]{32})\||s=([^\s\|]+?)\||p=([^\s\|]+?)\|)*)\//', $str, $match);
var_dump($isMatch, $match);

JS版:

var pattern = /ed2k:\/\/\|file\|([^\|]+?)\|(\d+?)\|([0-9a-zA-Z]{32})\|((?:\/\|sources,([^\s\|]+?)\||h=([0-9a-zA-Z]{32})\||s=([^\s\|]+?)\||p=([^\s\|]+?)\|)*)\//,
    str = '';
console.log(pattern.test(str));

本文来自清渭技术小站

正则表达式在线生成工具:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • php正则删除img标签的方法示例
  • php正则删除html代码中class样式属性的方法
  • PHP正则删除html代码中a标签并保留标签内容的方法
  • php正则去除网页中所有的html,js,css,注释的实现方法
  • 使用正则去除php代码中的注释方法
  • php和editplus正则表达式去除空白行
  • php使用正则表达式去掉html中的注释方法
  • PHP正则表达式过滤html标签属性(DEMO)
  • php过滤HTML标签、属性等正则表达式汇总
  • php正则过滤html标签、空格、换行符的代码(附说明)
  • php 正则 过滤html 的超链接

相关文章