我有以下字符串:
\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; **name="pceq"\r\n\r\n10154**
如何在名称之后立即提取报价中的任何内容,并在 \ r \ n \ r \ n 之后提取所有内容。所以我只想提取 pceq 和 10154 。
顺便说一下,这个字符串中唯一的静态是“破折号”和“\ r \ nConContent-Disposition:form-data;”我可以少关心,我只关心名字后的任何事情(pceq)和(10154)。
非常感谢您的帮助。
我把星星拿走了(这意味着他们要加粗)。
\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; name="pceq"\r\n\r\n10154
我喜欢@ user635522和@diEcho方法。这两个答案是否相等?意味着他们会给出相同的结果吗?
我忘了提到的另一件事是我想用空字符串(“”)替换我提到的整个字符串。所以像preg_replace或者替换我猜我需要用它来消除它吗?那会是什么方法?非常感谢所有回答的人。
答案 0 :(得分:1)
如果字符串存储在$ var then
中,我更愿意使用preg_matchpreg_match('/name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
答案 1 :(得分:0)
我只会使用strpos来实现这个
$searchstr; // the string to be searched
$first = substr($searchstr,strpos($searchstr,"name=")+5,strpos($searchstr,'"\r\n"));
$second = substr($searchstr,strpos($searchstr,"\r\n\r\n")+8); // offset here might be 4?
答案 2 :(得分:0)
试试这个
preg_match('/^name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
答案 3 :(得分:0)
使用/"(.*)"/
不匹配name属性的值,因为这将匹配第一个和最后一个“它可以找到,包括其他”之间的任何内容。
更好的方法是使用否定的字符类:/"[^"]*"/