php中几个重要字符串处理函数的实战应用
最近在和百度合作做百度知道,传到百度的任何html的关键字都是不解析的,
比如<br><p>这些,所以就出现了代码比较混乱的情况,如下图:
因此采用了strip_tags函数把发送过去的内容进行了去格式处理,这样就把所有的格式处理完,如下图:
这样格式就不存在了,所有的换行之类的符号格式都不存在了,所以导致换行,回车键全部被取消。格式就完全团到了一起。
为了把格式转化成带换行的形式,需要对内容进行重新转化和替换。
中间使用urlencode进行编码,然后到百度端他再进行urldecode进行反编码;
为了实现<br> ---> %0a这种替换,我们需要在发送给百度之前进行预处理;
预处理的方式就是把需要发送的内容进行url转码urlencode($content); 转码之后把<br>,br/>,<br />,<p>,</p>的转码内容替换为"%0d%0a"即可,代码如下:
然后再把内容通过urldecode()转回来,这样发送的内容就是我们经过处理之后的正确内容了。
代码及相关说明如下:
$content_send=$content;
//去掉发送内容中除<br><p>之外的tag标签
$content_t=strip_tags($content_send,"<br><p>");
//对内容进行编码
$content_m=urlencode($content_t);
//对内容中的<br><br/><br /><p></p>进行替换,换成换行符;
$content_n=str_replace(array('%3Cbr%3E','%3Cbr+%2F%3E','%3Cbr%2F%3E','%3Cp%3E','%3C%2Fp%3E'), "%0d%0a", "$content_m");
//然后进行解码,把解码后内容发送给百度
$content_s=urldecode($content_n);
其中用到的重要的几个函数如下:
strip_tags函数
strip_tags(string,allow)
参数 | 描述 |
---|---|
string | 必需。规定要检查的字符串。 |
allow | 可选。规定允许的标签。这些标签不会被删除。 |
1.不保留任何HTML标签,代码会是这样:
PHP代码
echo strip_tags($str);
// 输出:我来自大梦之家
2. 只保留<a>一个标签的话,只需要将<a>字符串写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<a>");
// 输出:我来自<a href='http://hi.baidu.com/yebihaigsino'>大梦之家</a>
3. 我们要保留<p>与<b>…多个标签,只需要将多个标签用空格分隔后写到strip_tags的第二个参数中,代码会是这样:
PHP代码
echo strip_tags($str, "<p> <b>");
// 输出:<p>我来自<b>大梦之家</b></p>
urlencode函数
string urlencode(string str);
本函数将字符串以 URL 编码。例如空格就会变成加号。
string urldecode(string str);
本函数将 URL 编码后字符串还原成未编码的样子。
str_replace(find,replace,string,count)
参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]