PHP 三个尖括号(<<<)含义

本文介绍了一种PHP中实用的代码段技巧,通过这种方式可以更整洁地插入多行HTML代码,保持代码逻辑清晰。

<?php $str = <<<CONTENT <a href="www.google.com" mce_href="www.google.com">Google</a> <a href="www.baidu.com" mce_href="www.baidu.com">Baidu</a> CONTENT; echo $str; ?>

这是代码段。PHP中代码段的使用有一个好处,就是当你需要输出一段代码时(可以包括多行),代码段可以保持一个更具逻辑性的形态。经常用来插入HTML代码。

注意CONTENT是任意字符,表示的是一个标记的意思。<<<CONTENT表示标记开始,最后的CONTENT表示代码段结束。且此CONTENT必须顶格写(前面不能有空格或者制表符等任意字符)

互联网上很多不同url都是指向同一页面的,比如: http://tieba.baidu.com/f?kw=%C9%CF%BA%A3%CA%C0%B2%A9%BB%E1 http://tieba.baidu.com/f?kw=%C9%CF%BA%A3%CA%C0%B2%A9%BB%E1&fr=tb0_search http://tieba.baidu.com/f?kw=%C9% … search&ie=utf-8 都指向的是同一页面:http://tieba.baidu.com/f?kw=%C9%CF%BA%A3%CA%C0%B2%A9%BB%E1。 我们需要把不同形式的url规范化,用统一的url代替。目前已经定义了一批规范化规则,你的任务是把一些待处理的url按规则替换成新的url。 每条规则都是一个字符串。为了方便理解,我们定义如下术语: 通配符:字符’#’或者’*‘,以及紧跟其后的长度限定符(可选)。其中’#’匹配数字,’*‘匹配任意字符。 长度限定符:紧跟通配符后,格式为[min-max],表示该通配符匹配的字符个数的最小值和最大值,其中 min和max均可以省略(但不能同时省略),当min=max时可以简写为[min]。’#’的默认最小长度为1,’*‘为0。二者的默认最大长度均为 无穷大。例如,”#[3]“表示3个连续数字,’*[3-9]‘表示3到9个任意字符,’*[-8]‘表示0-8个任意字符,’#[7-]‘表示至少七个 连续数字。注意,当通配符的后一个字符为左方括号’[‘时,它总是应当被看作长度限定符的开始标志。 尖括号:成对的小于符号”<”和大于符号”>”。尖括号总是两两配对,不存在无法配对的孤立尖括号,且尖括号内部不会出现通配符,也不会嵌套另一对尖括号。 规则片段:在处理规则之前,我们把规则分成若干个连续的片段,每个片段是单个通配符(以及紧随其后的长度限定符,如果有的话)、一对尖括号(以及括号内的字符,如果有的话),或者若干个连续的普通字符(不含通配符和尖括号)。为了避免歧义,规则应当被划分成最少 的片段。不难证明,此时的划分方法是惟一的。 例如,规则"abc\*d#[4-7]eeef<gh>i”包含7个规则片段:abc、*、d、#[4-7]、 eeef、<gh>、i。 用某一条规则处理url时,我们遵循以下步骤: 第一步:匹配。首先,忽略含有尖括号的规则片段,用其他片段来匹配url,使得每个片段所匹配的字符串从左到右 连接之后和该url完全相等。注意,连接顺序必须按照规则片段的顺序从左到右进行。根据定义,由普通字符组成的片段只能匹配和它完全相同的字符串,而通配符可以匹配多样化的字符串,规则如前所述。例如,abc<x>def*[3-5]ghi在忽略尖括号后得到四个片段:abc、def、* [3-5]、ghi,因此,abc<x>def*[3-5]ghi能匹配到的url是那些以abcdef开头,ghi结尾,中间有3到5个字 符的字符串。 如果无法匹配,说明该规则不适用于此url,处理结束;但有时会出现匹配方式不止一种的情况,还需要消除歧义。例如*bc<d>*<xyz>匹配abcabca的方法有两种: 在本题中,如果出现像这样匹配方法不惟一的情况,你应当选择让从左到右第一个通配符匹配字符数最少的方案。如果还有多种方案,再选择其中让第二个通配符匹配字符串最少的方案,以此类推。 在上面的例子中,应选择第一种方案。 第二步:替换。对于每对尖括号,把它左边相邻的url片段替换为尖括号内的 文本,然后连接所有url片段(输入数据保证规则不以左尖括号开头,并且相邻两对尖括号之间至少包含一个字符)。 我们仍然借助上例说明问题: 也就是说,”abcabca”被规则”*bc<d>*<xyz>”处理后变成了”adxyz”。 再举一个实际的例子:*/viewthread.php?tid=#&<>*<> 表示将url文件名为viewthread.php,第一个参数名为tid且参数值为数字时,把其它参数删除。 换句话说,这条规则将把 www.baidu.com/dir/viewthread.php?tid=123&arg=aa 替换为www.baidu.com/dir/viewthread.php?tid=123。 格式 输入格式: 第一行为一个正整数M,说明共有M条规则。第二行为一个正整数N,说明共有N条url。接下来M行,每行代表一条规则,不超过256个字符。 再接下来N行,每行代表一条url。所有URL都去掉了 http:// 头,且不含#*<>四种特殊字符,也不超过256个字符。M<=1000,N<=10000,输入的url和规则均不含汉字。 50%的数据保证N<=100,90%的数据保证N<=1000。 输出格式: 输
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值