首先说需要解决的问题,我们需要提取下面代码中的超链接https://www.pinzixing.com/d/D44Caps-Bold.rar,类似这样的记录有一万多条:
<p class="downss"><a class="download" href="https://www.pinzixing.com/d/D44Caps-Bold.rar" target="_blank" rel="noopener noreferrer">本地下载</a></p>
用到sql数据库语句中的substr和instr函数。
sql的substr函数用法介绍:
函数语法格式:substr(string,start,length)
string-指定的要截取的字符串。start-必需,规定在字符串的何处开始。正数-在字符串的指定位置开始,负数-在从字符串结尾的指定位置开始,0-在字符串中的第一个字符处开始。length-可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。
例如:select substr('abcdefg',3,4)from dual;结果是cdef
selectsubstr('abcdefg',-3,4)from dual;结果efg
注意:字符串中的第一个位置始终为1。以下两个sql查询的结果相同:
例如:select substr('abcdefg',0,3)from dual;结果是abc
select substr('abcdefg',1,3)from dual;结果是abc
sql的instr函数用法介绍:
函数语法格式:INSTR(substr,str)
返回字符串substr在str串的第一个出现的位置,INSTR(substr,str)这段代码返回值是4
搞懂了substr和instr函数的用法,我们的sql语句就好写了,直接按照下面代码执行即可。
select id,substr(post_content,instr(post_content,'href="')+6,instr(post_content,'" target="')-(instr(post_content,'href="')+6)) from wp_posts;
简单说明一下substr(post_content,instr(post_content,'href="')这段代码是获取href="第一个字符h在的位置,后面加6就是跳过href="直接从后面的网址开始,instr(post_content,'" target="')-(instr(post_content,'href="')+6)这段代码用了一个简单的加减运算,目的是算出我们需要截取的每条记录里面的超链接的字符数量。
SQL用substr和instr函数截取特定字符之间的字符的实战案例操作请参照SQL将文章内容下载链接批量移动到WP插件ordown。
评论