Ben en azından başka maçta aynı rakamın iki, 0 varsa "1" yazdırmak çalışıyorum.
What is wrong in the regex?
if ( max ( array_map ('strlen', preg_split('/([0-9])[^0-9]*\1/', "1 2 3 1 4") ) ) == 1 )
echo 1;
else
echo 0;
echo preg_match('/(?<=^|[^0-9])([0-9)+)(?=[^0-9]).*(?<=[^0-9])\1(?=[^0-9]|$)/', "1 2 3 1 4");
Dizisindeki herhangi bir tekrarlanan sayı için maç ve tekrarlanan bir şey, değilse 0 varsa 1 yankılanacak.
(Original version sadece bu dize her yerde tekrarlanan maçlar, birbirinden sonra tekrarlanan bir şey baktı)
Bir lookahead onaylama deneyin. Ben bir şey anlamaya çalışıyorum zaman ben "Regex Coach" kullanın. Size bir ipucu veya bir şey vermez, ama hemen geri vermez.
Test string: "1 2 3 1 4 3"
Regex: ([0-9])(?=.*\1)
Temelde () 'ın [0-9] etrafında sonucu depolamak ve ileri yönlü (= karşılaşmalar * -. Herhangi bir karakter ve sonra \ 1 - eşleşen birinci (yani herhangi bir sayı arar ve ardından önde görünüyor ne bu rakam yine oluşursa bakınız)
Bu, hem "1" ve "3" maç olacak
Php lookaheads destekliyorsa ise oldukça emin değilim, ama bu benim almak bulunuyor.