php获取字符串中图片url地址正则
例子
代码如下 | 复制代码 |
$preg = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/i"; preg_match_all($preg,$str,$res); |
这下子,管用多了,不管怎样的代码结构,都能顺利的匹配出图片的路径。
例子
代码如下 | 复制代码 |
$str='<p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src="upfiles/2009/07/1246430143_4.jpg" alt=""/></p><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src="upfiles/2009/07/1246430143_3.jpg" alt=""/></p><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 200%;"><img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/></p>'; |
最后总结一个下载远程图片地址
代码如下 | 复制代码 |
/** |
该类库是jehna/VerbalExpressions的php版本。
这货的竟然通过链式方法把正则给语义化了。。。我表示很愤慨啊。。。
安装
代码如下 | 复制代码 |
加入composer.json { |
使用
代码如下 | 复制代码 |
<?php 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 |
嵌套表达式
代码如下 | 复制代码 |
<?php $innerExpression = new VerbalExpression(); $innerExpression->word(); $outerExpression = new VerbalExpression(); $outerExpression->startOfLine() ->find($innerExpression) ->then($innerExpression) ->endOfLine(); // 返回 ^(\w+)(\w+)$ $outerExpression->compile(); |
禁用子模式捕获
默认情况下,子匹配规则可以被获取,并返回匹配的数组。
代码如下 | 复制代码 |
<?php // 禁用获取子匹配规则 $verbalExpression->disableSubPatternCapture()->word(); // (?:\w+) // 或 $verbalExpression->word(false); // (?:\w+) |
这样做只会影响后续增加的表达式;任何已经添加的匹配规则不会受到影响。这里允许禁用和启用组。
代码如下 | 复制代码 |
<?php |
正则表达式 |
<(\S*?) [^>]*>.*?</\1>|<.*? />
|
---|---|
匹配 | <html>hello</html>|<a>abcd</a> |
不匹配 | abc|123|<html>ddd |
正则表达式 |
^[^<>`~!/@\#}$%:;)(_^{&*=|'+]+$
|
---|---|
匹配 | This is a test |
不匹配 | <href = | <br> | 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)))
|
||
---|---|---|---|
匹配 |
|
||
不匹配 | click | onandon | mickeymouse |
正则表达式 |
(?s)/\*.*\*/
|
---|---|
匹配 | /* .................... */ | /* imagine lots of lines here */ |
不匹配 | */ malformed opening tag */ | /* malformed closing tag /* |
正则表达式 |
<(\S*?) [^>]*>.*?</\1>|<.*? />
|
---|---|
匹配 | <html>hello</html>|<a>abcd</a> |
不匹配 | abc|123|<html>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 | \* *\ |
正则表达式 |
<[a-zA-Z]+(\s+[a-zA-Z]+\s*=\s*("([^"]*)"|'([^']*)'))*\s*/>
|
---|---|
匹配 | <img src="test.gif"/> |
不匹配 | <img src="test.gif"> | <img src="test.gif"a/> |
方法一
代码如下 | 复制代码 |
$a ='<a href="www.111cn.net">百度</a>谷哥<a href="www.111cn.net">谷歌</a><a href="www.111cn.net">雅虎</a>'; 得出结果 Array ( [0] => Array ( [0] => <a href="www.111cn.net">百度</a> [1] => <a href="www.111cn.net">谷歌</a> [2] => <a href="www.111cn.net">雅虎</a> )
) |
方法二
示例如下:
代码如下 | 复制代码 |
$str1 = '<a href=http://www.111cn.net>test</a>'; $str2 = '<a href='http://www.111cn.net'>test</a>'; $str3 = '<a href = "javasccript: href ('test');" target = "_blank" />test</a>'; $regex = '/hrefs*=s*(?:"([^"]*)"|'([^']*)'|([^"'>s]+))/'; preg_match($regex, $str1, $matches); print_r($matches); preg_match($regex, $str2, $matches); print_r($matches); preg_match($regex, $str3, $matches); print_r($matches); 匹配结果: Array ( [0] => href=http://www.111cn.net [1] => [2] => [3] => http://www.111cn.net ) Array ( [0] => href='http://www.111cn.net' [1] => [2] => http://www.111cn.net ) Array ( [0] => href = "javasccript: href ('test');" [1] => javasccript: href ('test'); ) |
/href\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([^"\'>\s]+))/
思路很巧妙,即:
分两步,先区配a标签,然后再区配a标签里面的链接
采用php的正则删除中文
代码如下 | 复制代码 |
/*转换为UTF8 再处理*/ $a = mb_convert_encoding($a, 'UTF-8', 'GB2312'); $a = mb_convert_encoding($a, 'GB2312', 'UTF-8'); |
例子
代码如下 | 复制代码 |
|
简单说明下
x{4e00}-x{9fff} 这个是中文区间(各种文字都有unicode码区间)
/u 表示采用unicode码 进行正则判断
[] 正则标准括号,表示范围[0-3]表示 0,1,2,3, 0到3的意思
相关文章
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
- 这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 在网站开发中,我们经常使用php similar text 计算两个字符串相似度;1,similar_text的用法 如果我想计算"ly89cn"和"ly89"的相似程度,有两种表示方法复制代码 代码如下: echo similar_text('ly89cn', 'ly89'); ...2015-11-08