注册时间 2012-6-22 最后登录 2020-11-29 阅读权限 200 积分 18282 精华 6 帖子 539
签到天数: 31 天
[LV.5]常住居民I
151****1798
发表于 2012-11-14 16:42:07
| 显示全部楼层
p语言是什么
爱飞软件内置了p语言解释器,p语言是针对HTML代码专门研发的一种编程语言,语法类似于c语言,区别在于,爱飞软件预置或自动配置大部分HTML常用变量,用户只需编写数行代码,即可获取并返回相应的值给软件调用,从而实现相关的功能。
p语言能做什么
当爱飞软件预置的功能无法快速解决问题时,可以尝试使用p语言。
p语言可以按照用户想法,实现绝大部分功能:如处理方案的精细化设定,标题整理、正文格式整理、判断过滤等,增加规则的灵活性等。
p语言的基本语法
1.语法入口 :主要在大括号之内书写代码,一行一句2.定义局部变量 :局部变量只在大括号之内传递、生效,不会传递给之后的处理过程void main(void)
{
int tem; // 定义tem为整数型局部变量
cstr tep; //定义tep为字符型局部变量
} 复制代码 3.定义全局变量 :在一个采集发布循环中有效,即可以传递给后面的处理过程,但是不会无限制传递,如果需稳定传递出去,须使用内存存储int tem1; // 定义tem1为整数型全局变量
cstr tep1; //定义tep1为字符型全局变量
void main(void)
{
} 复制代码 4.注释方法 :为了便于阅读理解,可以给语句加上注释,注释的语句不会被执行,也可用来屏蔽代码便于调试//双斜杠表示单行注释(即双斜杠后面的语句不执行)
/*
斜杠+星号表示开始
多行注释,可用来屏蔽数行代码并调试
星号+斜杠表示结束
*/ 复制代码 5.调试方法
p语法检查按钮:用来快速判断是否有代码书写错误,如英文字符写成中文字符
函数:msgbox(变量等),执行过程中,弹出显示相应的变量值,便于观察执行是否出错
函数:print(变量等),执行过程中,在信息栏显示相应的变量值
6.赋值和函数用法 :一行一句,每句结尾需使用英文分号void main(void)
{
cstr url, name; //多个变量可以用逗号分开,变量前后的空格可以方便阅读,不会影响代码执行
int i;
url = “http://www.aifaces.org”; //给字符变量url赋值,注意字符两边要用 英文双引号
i = 1; //给数值变量 i 赋值,数值不需要用双引号,字符型变量可以通过运算转换成数值型
name = strbetween(cstr html , cstr left , cstr right , int start , int inc); //截取字符函数--strbetween(处理变量, 左边界字符, 右边界字符, 从处理变量中的开始位置, 是否包含左右边界字符 1为包含 0为不包含)
……
} 复制代码 7.三个需要转义的字符 , ' " \ 这三个字符是系统保留字符,赋值字符类型遇到需要多加反斜杠来进行转义,如:name="it\'s \"s\"" ; // 表示给name赋值 it's "s" 复制代码 8.布尔运算 == 等于(数值的判断,并非赋值)
!= 不等于
> 大于
>= 大于登录
< 小于
<= 小于等于
(布尔值)||(布尔值) ||是逻辑“或”运算符,两个布尔值中任何一个值为TRUE(或者两个都为TRUE),那么他就返回TRUE。如果两个运算符都是FALSE,则返回FALSE。
(布尔值)&&(布尔值) &&是逻辑“与”运算符,逻辑操作符,也叫条件操作符,两个布尔值中任何一个值为FALSE(或者两个都为FALSE),那么他就返回FLASE。如果两个运算符都是TRUE,则返回TRUE。 复制代码 9.判断函数if的用法,不支持嵌套
简化用法:if(判断条件)//本句结尾无分号,只执行下面一句
a;//执行a 复制代码 完整写法:if(判断条件)//本句结尾无分号,执行下面一对大括号之内代码
{
a;//执行a
return;//返回
}
else//如果判断条件为否
{
b;//执行b
} 复制代码 10.循环判断函数while的用法,判断循环,可以嵌套 if while(a > b)//如果a大于b,则执行(利用下面的a-1,来控制多重循环执行次数,如果书写错误易造成死循环)
{
xxx;//执行xxx
a = a - 1;//a减去1,之后继续从while执行,直到 a小于等于b
} 复制代码 p语言的书写位置
1.规则--“标签处理”:处理标签中p语言,可用来处理html代码
2.处理方案--p2:处理采集各过程的变量
p语言的示例
1.处理方案--p2 发布前p处理:增加标题后缀 void main(void)
{
$m_ntitle=$m_ntitle+"标题后缀"; //增加标题后缀
} 复制代码 2.处理方案--p2 发布前p处理:随机设置主题分类 void main(void)
{
int i;
i=rand(3,1); //在1-3取随机数,当随机到某个数字的时候,给分类赋值
if(i==1) //如果 i 等于1
$m_ntype="上海";//主题分类设置为 上海
if(i==2)
$m_ntype="北京";
if(i==3)
$m_ntype="南京";
} 复制代码 2.处理方案--p2 发布前p处理:自动判断并设置主题分类,比如影视主题重新分类 void main(void)
{
if(strfind($m_ntitle,"欧美")>=0)//如果标题内搜索到 欧美 字符,即包含字符 欧美
$m_ntype="欧美"; //主题分类设置为欧美
if(strfind($m_ntitle,"日韩")>=0)
$m_ntype="日韩";
if(strfind($m_ntitle,"港台")>=0)
$m_ntype="港台";
} 复制代码 3.处理方案--p2 发布前p处理,或采集规则--正文--正则过滤--p处理:删除文章中多余空行 void main(void)
{
$m_ncontent= paradelete($m_ncontent,0-1);//删除所有空行,0-1表示-1,负数目前需用表达式表示
} 复制代码 4.列表采集规则--有效区域-p处理:判断有效区域的范围,过滤置顶贴 void main(void)
{
if(strfind($m_html,">版块主题")>0)//如果源代码内包含字符“>版块主题”
$m_return=strbetween($m_html,">版块主题","</body>",0,0);//$m_return为返回给软件的值,将有效区域限定为从 >版块主题 到源码结束标志</body>
} 复制代码 5.处理方案--p2 发布前p处理,或采集规则--正文--正则过滤--p处理:增加图片前后空行 void main(void)
{
$m_ncontent=regexrep($m_ncontent,"(\\[img.*?/img\\])","
$1
"); //分号为一句语句结束标志,利用正则在图片代码前后增加空行
} 复制代码 6.采集规则--正文下一页--正则过滤--p语言:判断下一页是否包含下划线,不包含则不是本文下一页,防止翻页过头 void main(void)
{
if(strfind($m_pageurl,"_")<0)//如果下一页网址中不包含字符下划线
$m_return=""; //则将下一页网址置空
} 复制代码 7.采集规则--正文--获取内容--p语言:有时候网页会有隐藏代码,需要去掉后,才能获取所有内容 void main(void)
{
$m_ncontent=strreplace($m_ncontent,"style=\"display:none;\"","");//将正文代码中的 style="displasy:none;" 代码删除(置空)
} 复制代码
踩过的脚印
总评分: 铜钱 + 1
查看全部评分