如何用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.
?>