Basit düzenli ifade soru: Tüm @ adınızı html bir sayfada bahseder bulmak için nasıl?

4 Cevap php

Ben php düzenli ifadeler yeniyim.

Ben html uzun bir dize var. Ben tüm tekrarlarını bulmak istiyoruz:

@any_username_after_an_at_sign

Could somebody help me recover all of the usernames on a page? I think you use preg_match but I don't know the regular expression to use.

Teşekkürler!

4 Cevap

Eğer deneyebilirsiniz:

/@\w+/

Ama bu tür e-posta adresleri parçaları gibi bazı yanlış sonuç, pick up olabilir. Bize bağlamda hakkında bir şey söyleyebilir miyim?

Daha fazla bilgi olmadan emin olmak zor olsa da, aynı zamanda, bir HTML çözümleyici kullanarak düşünebilirsiniz alakalı olabilir.

Basit:

preg_match_all('~@(\w+)\b~', '@me @you', $usernames);
print_r($usernames);

Sonuç:

Array (
  [0] => Array(
    [0] => @me
    [1] => @you
  )
  [1] => Array (
    [0] => me
    [1] => you
  )
)

Bunu aldıktan sonra, sadece yanlış pozitif ayıklamak için kullanıcıların DB tabloya karşı bu maç. İçeride niteliklerini metin almamak için bunu önce de strip_tags() isteyebilirsiniz.

Bu deneyin:

@\S+

ve preg_match_all kullanmak

Bağlamı göz önüne alındığında twitter page, böyle bir şey işe yarayabilir.

'@<a class="tweet-url username"[^>]*>([^<]*)</a>'

ancak uygun ayrıştırıcı her zaman bu tür bir sorun için bir regex daha iyi çalışır