ค้นหาและจัดเก็บ (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