Bir biçimde tüm örneklerini ayıklamak için PHP düzenli ifade sözdizimi

2 Cevap php

Ben bir dize belirli bir formatta tüm örneklerini ayıklamak çalışılıyor:

Ben merak ediyorum eğer benim yeni Sony [PT # 123456ABC; Sony] Bu özelliğe sahip ama arkadaşım yeni Toshiba [PT # AD-3232hjk diyor; Toshiba] Bu özelliği vardır.

Ben ayıklamak istiyorum:

[PT # 123456ABC; Sony]

[PT # AD-3232hjk; Toshiba]

Burada gördüğünüz gibi, tutarlı pozisyonlarda tek öğeler şunlardır:

  • [PT #
  • ;
  • ]

I strpos () çeşitli kullanmaya çalışıyordu ama, çünkü parça numaraları ve üretici isimleri değişen uzunluklarda ve biçimleri ben güvenilir bir çok daha büyük dizeden bu örnekleri çekin başaramadı. Ancak onlarla bilgim oldukça sınırlı bu çözmek için normal ifadeler kullanmak için çeşitli yollar çalışıyorlar. Ben bu ifadeler ayıklanır ve değişken yerleştirilmesi var sonra sonra ifadeden parça numaraları ve üretici isimleri ayırmak gerekir. Bu aynı zamanda düzenli ifadeler kullanarak gerçekleştirmek daha kolay olabilir.

Any help is appreciated. Thanks

2 Cevap

Ben bu bunu yapacağını düşünüyorum

preg_match_all( "/(\[PT#\s+.*?;\s+.*?\])/", $input, $matches );

print_r( $matches );

Altternatively, sadece benzersiz bilgi yakalamak istiyorsa

preg_match_all( "/\[PT#\s+(.*?);\s+(.*?)\]/", $input, $matches );

Ben bu girdileri bir sürü içeren bir metin dosyası okuma olacak götürün. Ne yapabilirim:

preg_match_all("/\[PT#(.*?);[.*]?(.*?)\]/i", $text, $result);

Bu dizi $ sonucu içine tüm maçları koyacağız ve böylece onları erişebilirsiniz:

echo $result[1][0]; //echos first occurrence's serial

$ Sonuç sütun ana kriteri ve bir gole ilk giriş tamamlandıktan maç dize olduğunu

echo $result[0][0]; // would print [PT# 123456ABC; Sony]
echo $result[1][0]; // would print 123456ABC
echo $result[2][0]; // would print Sony

Umut olur

EDIT: regex sabit, şimdi çalışması gerekir (hala denenmemiş)