การแปลง Perl Regex เป็น PHP [ปิด]


-1

ฉันมี Regex ต่อไปนี้ใน PERL ซึ่งฉันจำเป็นต้องแปลงเป็น PHP

if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }

ฉันมี PHP ต่อไปนี้เพื่อให้ตรงกับในขณะนี้ แต่ฉันไม่ได้ผลลัพธ์เดียวกัน:

preg_grep('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/', $lines);

ใครสามารถบอกฉันว่าสิ่งที่ฉันมีเหมือนกันหรือถ้าฉันเข้าใจผิด?

คำตอบ:


0

preg_grepส่งกลับอาร์เรย์ในขณะที่ถ้าคุณใช้preg_matchคุณจะได้รับบูลีน ดังนั้นหากคุณกำลังใช้:

if($line =~ m/[<]div class="row.* id="(vm_[0-9]{8,9})"[>]/i){ }

มันจะเทียบเท่ากับ:

if(preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $line)) { };

แม้ว่าคุณสามารถทำให้ regex ง่ายขึ้นเล็กน้อย:

if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line)) { };

หากคุณต้องการดูการแข่งขันคุณสามารถทำได้:

if(preg_match('/<div class="row(.*) id="(vm_[0-9]{8,9})">/i', $line, $match)) {
    print_r($match);
};

เฮ้ขอบคุณมาก .. แต่คุณช่วยฉันแสดงการแข่งขันได้ไหม?
user3428183

@ user3428183 เพิ่มว่าในคำตอบของฉัน
Jerry

ขอบคุณ. แต่ข้อผิดพลาด $ line ควรเป็นสตริง ในกรณีของฉันมันเป็นอาร์เรย์
3428183

ฉันเข้าใจแล้ว. Thanx มีหลายบรรทัดและแสดงเฉพาะบรรทัดที่ 1 ฉันจะจับคู่มันกับทุกบรรทัดได้อย่างไร
user3428183

1
@ user3428183 คุณเปลี่ยนpreg_matchไปpreg_match_allและขั้นตอนนั้นเหมือนกัน อย่าลังเลที่จะยอมรับคำตอบของฉัน :)
เจอร์รี่

0

รหัสตัวอย่าง:

if (preg_match('/[<]div class="row(.*) id="(vm_[0-9]{8,9})"[>]/i', $lines)) {

  echo "A match was found.";

}

เฮ้ขอบคุณมาก .. แต่คุณช่วยฉันแสดงการแข่งขันได้ไหม?
3428183
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.