开发者

Substring or regular expression in PHP

I have the following string:

\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; **name="pceq"\r\n\r\n10154**

How would I go about extracting anything that's in the quote right after name and extract everything after \r\n\r\n. So I want to ext开发者_如何学Goract pceq and 10154 only.

BTW the only thing that's static in this string would be "dashes" and "\r\nContent-Disposition: form-data;" Which I can care less, I only care about whatever is right after name (pceq) and only (10154).

Your help is much appreciated and thanks.

Update:

I took the stars out (which meant to be their to bold it).

\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; name="pceq"\r\n\r\n10154

I like @user635522 and @diEcho approach. Are both answer equal? Meanning they'll give the same result?

Another thing I forgot to mention is that I would like to replace the entire string that I mentioned with an empty string(""). So something like preg_replace or replace I guess I need to use to blank it out? What would be the approach for that? Thanks a lot for everyone who answered.


I will prefer to use preg_match if string is stored in $var then

preg_match('/name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers


I would just use strpos for this

$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?


Do not match for the value of the name attribute using /"(.*)"/ as this would match anything between the first and last " it can find, including other ".

A better approach is using negated character classes like so: /"[^"]*"/


try this

preg_match('/^name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜