Подстрока или регулярное выражение в PHP - PullRequest
0 голосов
/ 05 марта 2011

У меня есть следующая строка:

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

Как мне извлечь что-нибудь из цитаты сразу после name и извлечь все после \ r \ n \ r \ n . Поэтому я хочу извлечь только pceq и 10154 .

Кстати, единственное, что статично в этой строке, это "dashes" и "\ r \ nContent-Disposition: form-data;" Что мне безразлично, меня волнует только то, что сразу после имени (pceq) и только (10154).

Ваша помощь высоко ценится и спасибо.

Обновление:

Я вынул звезды (что означало быть их смелыми).

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

Мне нравится @ user635522 и подход @diEcho. Оба ответа равны? То есть они дадут одинаковый результат?

Еще одна вещь, которую я забыл упомянуть, это то, что я хотел бы заменить всю упомянутую строку пустой строкой (""). Так что-то вроде preg_replace или замены я думаю, мне нужно использовать, чтобы очистить его? Каков будет подход к этому? Большое спасибо всем, кто ответил.

Ответы [ 4 ]

1 голос
/ 05 марта 2011

Я предпочитаю использовать preg_match, если строка хранится в $ var, тогда

preg_match('/name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
0 голосов
/ 05 марта 2011

Не сопоставлять значение атрибута name с помощью /"(.*)"/, поскольку это будет совпадать с первым и последним «он может найти, включая другие».

Лучшим подходом является использование отрицательных классов символов, таких как: /"[^"]*"/

0 голосов
/ 05 марта 2011

попробуйте

preg_match('/^name="(.*)"\r\n\r\n(.*)/', $var, $matches);
echo $matches[1]; // name
echo $matches[2]; // numbers
0 голосов
/ 05 марта 2011

Я бы просто использовал 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?
...