如何用php正则表达式查找html中有id属性的标签?
即需要查找尖括号<>中,以及id=""的html标签。
例如:
不匹配<div >……</div>的内容/div>
以上内容,可以用如下的正则匹配:
这里举一个完整的php正则匹配包含ID属性的html标签的例子。
如下:
<?php $str = '<div id="ab">123213</div><div >213123</div>'; $search = '#<[a-zA-Z0-9][^>]+?id=[^>]+?>.*?</div>#is'; preg_match_all($search,$str,$r); echo '<pre>'; print_r($r); echo '</pre>'; ?>
输出:
Array
(
[0] => Array
(
[0] => <div id="ab">123213</div>
)
)
- 上一篇:php正则表达式匹配邮箱的问题解析
- 下一篇:php正则 匹配无重复的5到10位数字
- 提取html标签的php代码示例
- php入门教程(二十) php常用正则表达式
- php提取HTML标签的方法举例
- PHP正则表达式清除超链接文本的例子
- php正则表达式匹配URL的小例子
- php去除HTML标签的二种方法
- php正则表达式匹配中文的二个例子
- PHP转义正则表达式字符的函数
- php 去除多余的HTML标签
- php与css 标签云效果
- 分享二个php 标签云的实例代码
- php正则验证email地址的例子
在php中拆分数组,可以用array_slice函数。
array_slice()函数
返回数组中的一部分,从键offset开始,到offset+length位置结束。
其形式:
array array_slice (array array, int offset[,int length])
offset 为正值时,拆分将从距数组开头的offset 位置开始;
如果offset 为负值,则拆分从距数组末尾的offset 位置开始。
如果省略了可选参数length,则拆分将从offset 开始,一直到数组的最后一个元素。
如果给出了length 且为正数,则会在距数组开头的offset+length 位置结束。
相反,如果给出了length且为负数,则在距数组开头的count(input_array)-|length|位置结束。
例子:
<?php //拆分数组的例子 //by www. $fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); $subset = array_slice($fruits, 3); print_r($subset); // output // Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon ) ?>
例子,使用下负长度,看看会有什么结果?
<?php //拆分数组 //by www. $fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon"); $subset = array_slice($fruits, 2, -2); print_r($subset); // output // Array ( [0] => Orange [1] => Pear [2] => Grape ) ?>
php正则表达式匹配邮箱,代码如下:
<?php $a='/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/'; $b='1412424545645454545454545k@qq.com'; if(preg_match($a,$b)){ echo "电子邮件合法"; }else{ echo "电子邮件不合法啊"; } //by www. ?>
为何上面的输出为合法呢?
{2,10}这里不是只能放2到10位数字吗,但上面的邮箱却超出10位了。
这个正则是能匹配的,匹配到这样这部分 '545454545k@qq.com'
前面部分的1412424545645454不匹配,所以还是合法的。
正确匹配,可以修改为这样:
注意正则:/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/
它没有断言,意味着只要字符串中有符合的部分就匹配,因此{2,10}是只能2到10位匹配,但不针对整个字符串只要有一部分符合就匹配了。
要判断一整段字符串是否都匹配就要用断言。如^ $
/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/
注意头和尾加上了^ $
完善好的代码,如下:
<?php $a='/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/'; $b='1412424545645454545454545k@qq.com'; if(preg_match($a,$b)){ echo "电子邮件合法"; }else{ echo "电子邮件非法"; } //by www. ?>