PHP中的子串或正则表达式

时间:2011-03-05 08:54:22

标签: php replace preg-replace preg-match

我有以下字符串:

\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或者替换我猜我需要用它来消除它吗?那会是什么方法?非常感谢所有回答的人。

4 个答案:

答案 0 :(得分:1)

如果字符串存储在$ var then

中,我更愿意使用preg_match
preg_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属性的值,因为这将匹配第一个和最后一个“它可以找到,包括其他”之间的任何内容。

更好的方法是使用否定的字符类:/"[^"]*"/