[英]Substring or regular expression in PHP
我有以下字符串:
\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; **name="pceq"\r\n\r\n10154**
我将如何提取名称后引号中的所有内容,并提取\\ r \\ n \\ r \\ n之后的所有内容 。 所以我只想提取pceq和10154 。
顺便说一句,在该字符串中唯一静态的是“破折号”和“ \\ r \\ nContent-Disposition:form-data;”。 我不太在乎,我只在乎名称(pceq)和仅(10154)。
非常感谢您的帮助。
我把星星拿掉了(这意味着要把它们加粗)。
\r\n-----------------------------7dbbb1a140240\r\nContent-Disposition: form-data; name="pceq"\r\n\r\n10154
我喜欢@ user635522和@diEcho方法。 答案是否相等? 意味着他们会给出相同的结果吗?
我忘记提及的另一件事是,我想用空的string(“”)替换我提到的整个字符串。 所以像preg_replace或replace之类的东西,我想我需要用它来消除它? 这样做的方法是什么? 非常感谢所有回答的人。
如果字符串存储在$ var中,我将更喜欢使用preg_match
preg_match('/name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
我只会为此使用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?
尝试这个
preg_match('/^name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
不要使用/"(.*)"/
来匹配name属性的值,因为这将匹配它可以找到的第一个和最后一个“包括其他”之间的任何内容。
更好的方法是使用否定字符类,例如: /"[^"]*"/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.