"Adlı iki alt şablonlar aynı ada sahip" Got

2 Cevap php

Ben birine aynı adları ile 2 farklı regex birleştirmek için çalışıyor ve bu gibi hata mesajı aldım ediyorum:

Warning: preg_match(): Compilation failed: two named subpatterns have the same name at offset 276 ...

Bir regex bu gibi görünüyor:

'%<div class="artikkelen">[\s\S]*?<h2>(?P<title>[\s\S]*?)</h2>%'

Diğer Bu gibi görünüyor:

'%<div id="article">[\s\S]*?<h1>(?P<title>[\s\S]*?)</h1>%'

Ben sorun olmadan şu şekilde bunları birleştirmek olabilir:

'%(<div class="artikkelen">[\s\S]*?<h2>(?P<title>[\s\S]*?)</h2>|<div id="article">[\s\S]*?<h1>(?P<title2>[\s\S]*?)</h1>)%'

Ben 2 adları kullanabilirsiniz, çünkü ancak bu şekilde sevmiyorum. Ben bu sorunu çözmek için daha iyi bir yolu olup olmadığını merak ediyorum. Şimdiden teşekkürler.

Best Regards, Box (boxoft...Simple & Great)

2 Cevap

Bunun yerine bu gibi bunları birleştirmek olabilir:

%<div (class="artikkelen"|id="article")>[\s\S]*?<h[12]>(?P<title>[\s\S]*?)</h[12]>%

Bu daha önce olduğu gibi tam olarak aynı değil ama yeterince iyi olabilir.

Ben (? Veya daha fazla) Bu sayfa, iki için bir yol arıyor bulunan aynı adla adlandırılmış alt şablonlar ve ben (burada ilgili alıntı) cevap this page bulundu

Duplicate names

Adlandırılmış kalıplarını kullanarak iseniz artık sizin desen "(? J)" seçeneğini koymak koşuluyla, aynı adı birden çok kez olabilir. Örneğin:

    Match: (?J)(?P<name>Ni.+)|(?P<name>Fr.+)

Bu "Nick" veya "Fred" neticesinde, ve hangisi eşleşti adlı model "isim" buna ayarlanmış olması olurdu.

Sadece evrene bilgi geri katkıda