REGEX: Belirli bir sözcük kadar kapma herşey

2 Cevap php

ex: <a><strike>example data in here</strike></a>

Ben sonuna kadar bir etiketi içinde her şeyi, istediğiniz

/<a>([^<]*)<\/a>/

Bu <a> etiketi içinde herhangi bir ek etiket vardır çalışır, ama orada ne olur?

Sana [^</a>] yerine [^<] sadece her şeyi kapmak için bunu söyleyebilirim bilmek istiyorum.

Ile yapıyor /<a>(.*)<\/a>/ iyi çalışmaz. Bazen ben hatlarının ton olduğunu çağrısı dahil olsun <a> etiketi ve diğer zamanlarda her şey olsun.

2 Cevap

/<a>(.*?)<\/a>/

çalışması gerekir. ? tembel yapar, bu yüzden </a> kısmını eşleşen önce mümkün olduğunca az tutuyor. ancak burada. onu bulana kadar her şeyi eşleşen anlamına gelecektir </a>. Eğer hatları üzerinden maç edebilmek istiyorsanız, aşağıdaki kullanabilirsiniz eğer ile preg_match

/<a>(.*?)<\/a>/s

Sonunda "s" anlamına gelen "tek satır" modunda normal ifade koyar. karakteri yeni hatlar dahil tüm karakterleri ile eşleşir. Bkz other useful modifiers

Onlar doğru almak zordur ve HTML düzgün yapılandırılmalıdır Rootkitler güvenilmez olduğu gibi, HTML ayrıştırmak için normal ifadeler kullanmayın. Bu başka bir tekerleği yeniden icat size bir şey kazanmak değil bir daha yerdir. Python dünyada biz her zaman popüler BeautifulSoup kütüphane önermek ve ben de iyi bir süper-kolay çözümleyici olarak dil eminim.