Найти и сохранить (Regex, PHP)

Я получаю список тегов, используемых в сообщении с массивом $posttags. В нем есть специальный тег, который я хочу хранить отдельно: profile-somename.

Как мне:

  1. Найдите этот специальный тег profile-somename в списке (значение после profile- является динамическим, постоянно меняется, somename — это просто пример)
  2. Снимите с него profile- и
  3. Хранить в отдельной переменной?

Большое спасибо за вашу помощь.


person eozzy    schedule 09.02.2010    source источник


Ответы (1)


нравится

$tags = array('foo', 'bar', 'profile-blah');
$found = preg_grep('~^profile~', $tags);
if($found)
   $profile_name = substr(end($found), strlen('profile-'));

хорошо, оказывается, у нас есть массив объектов. preg_grep с ним работать не будет, так что придется зацикливаться

function find_profile_name($posttags) {
   foreach($posttags as $tag)
      if(preg_match('~^profile-(.+)~', $tag->slug, $m))
          return $m[1];
   return null; // no profile-... found
}
person user187291    schedule 09.02.2010
comment
Отлично, почти работает, но у меня, кажется, многомерный массив, поэтому приведенный выше код не работает с ним. Что я должен изменить в вашем коде, чтобы он работал с моим массивом md? - person eozzy; 09.02.2010