PHP中获取rawurlencoded字符串换行/回车前的内容
提取Rawurlencoded字符串的首行内容
针对你需要处理rawurlencoded格式字符串、提取到编码换行符(%0A)或回车符(%0D)之前内容的需求,可以写一个自定义函数来实现类似strtok的效果,具体代码如下:
function getFirstLineRawUrlEncoded($rawStr) { // 查找%0A和%0D的首次出现位置 $posNewline = strpos($rawStr, '%0A'); $posCarriage = strpos($rawStr, '%0D'); // 确定需要截断的位置:取存在的位置中最小的那个,若都不存在则为null $cutPos = null; if ($posNewline !== false && $posCarriage !== false) { $cutPos = min($posNewline, $posCarriage); } elseif ($posNewline !== false) { $cutPos = $posNewline; } elseif ($posCarriage !== false) { $cutPos = $posCarriage; } // 根据截断位置返回对应内容 return $cutPos !== null ? substr($rawStr, 0, $cutPos) : $rawStr; }
测试示例
- 输入:
First%20sentence.%0D%0ASecond%20Sentence.
输出:First%20sentence. - 输入:
Just%20one%20sentence.
输出:Just%20one%20sentence.
说明
- 函数会优先找到
%0A或%0D中最先出现的位置,截断并返回之前的内容 - 如果字符串中没有这两个编码字符,直接返回原字符串
- 处理边界场景(比如字符串开头就是编码换行符)时,会返回空字符串,符合首行提取的逻辑
内容的提问来源于stack exchange,提问作者user23285912
相关产品推荐
相关产品推荐

