Bir dizginin HTML verisi içerip içermediğini nasıl bulabilirim? Kullanıcı, web arayüzü üzerinden girdi sağlar ve basit bir metin veya kullanılmış HTML formatı kullanmış olması oldukça olasıdır.Dize html verileri içeriyorsa nasıl bulunur?
cevap
HTML etiketlerini aramak için normal ifadeleri kullanabilirsiniz. senin yedekleme fasulye ise
Ah, eski iyi sorun # 2. Tom doğru, regex işini yapmanın en doğrudan yoludur ve genellikle, gitmenize yardımcı olacak birçok çevrimiçi örnek vardır. –
@Alex Larzelere: Sorun # 2? Açıklayabilir misin? Bu bir xkcd referansı mı ("şimdi iki probleminiz var") veya başka bir şey var mı? – CPerkins
@Cperkins tam olarak bu. Ol 'problemi # 2, sorun # 1 elbette orijinal olarak yapmaya çalıştığınız şeydir. –
, sen, normal ifadeleri (yavaş) kullanın veya sadece "<>" karakter bulmak için deneyebilirsiniz vb <b>
veya <i>
... olarak html etiketlerini bulmak için deneyebilirsiniz. Kullanıcının html kullandığını veya olmasını istemediğinize bağlıdır.
kullanıcı <asdf>
yazabilirsiniz unutmayın. Kullanılan html'nin geçerli olduğundan% 100 emin olmak istiyorsanız, bazı kütüphanelerden (TidyHTML belki?)
Karmaşık bir html ayrıştırıcısı kullanmanız gerekecek. Sadece normal ifade dizeleriyle ilgili yardım almalısınız. Potansiyel html etiketlerini bulmanıza yardımcı olurlar. Daha sonra iç herhangi bir html anahtar kelimeleri içerecek şekilde karşılaştırabilirsiniz. Bulunduğunda, HTML kullanmamak için bir uyarı koyun. Ya da başka türlü hissederseniz, sadece silin.
Kullanıcının girişinde HTML olmasını istemiyorsanız, '<' karakterlerinin tümünü '& lt;'; ve '>' ile '& gt;'; (& ve g arasında boşluk)
Bu eski bir soru olduğunu biliyorum ama bunun karşılaştım ve HTML varlıklar gibi şeyler algılamak olabilir ve < ve> sembollerin diğer kullanımları görmezden olacağını daha kapsamlı bir şey arıyordu. İyi çalışan bir sınıfla geldim.
canlı onunla oynayabilir Ayrıca JUnit testleri bir grup ile GitHub bu yükledi.
package org.github;
/**
* Detect HTML markup in a string
* This will detect tags or entities
*
* @author [email protected] - David H. Bennett
*
*/
import java.util.regex.Pattern;
public class DetectHtml
{
// adapted from post by Phil Haack and modified to match better
public final static String tagStart=
"\\<\\w+((\\s+\\w+(\\s*\\=\\s*(?:\".*?\"|'.*?'|[^'\"\\>\\s]+))?)+\\s*|\\s*)\\>";
public final static String tagEnd=
"\\</\\w+\\>";
public final static String tagSelfClosing=
"\\<\\w+((\\s+\\w+(\\s*\\=\\s*(?:\".*?\"|'.*?'|[^'\"\\>\\s]+))?)+\\s*|\\s*)/\\>";
public final static String htmlEntity=
"&[a-zA-Z][a-zA-Z0-9]+;";
public final static Pattern htmlPattern=Pattern.compile(
"("+tagStart+".*"+tagEnd+")|("+tagSelfClosing+")|("+htmlEntity+")",
Pattern.DOTALL
);
/**
* Will return true if s contains HTML markup tags or entities.
*
* @param s String to test
* @return true if string contains HTML
*/
public static boolean isHtml(String s) {
boolean ret=false;
if (s != null) {
ret=htmlPattern.matcher(s).find();
}
return ret;
}
}
kullanıyorum regex:
[\S\s]*\<html[\S\s]*\>[\S\s]*\<\/html[\S\s]*\>[\S\s]*
Yani JAVA görünüyor gibi:
text.matches("[\\S\\s]*\\<html[\\S\\s]*\>[\\S\\s]*\\<\\/html[\\S\\s]*\\>[\S\s]*");
Bir "html" öğesinde bulunan herhangi bir doğru (yanı yanlış) XML dosyasıyla eşleşmelidir. Yani yanlış pozitifler olabilir.
Düzenleme: Bazı web siteleri bunu kullanmıyorum buldum gibi, html elemanı kapanış ile son bölümünü kaldırdık, o gönderdiniz beri
. (?!) Öyleyse yanlış pozitiflere yanlış pozitifleri tercih edersiniz, bunu yapmayı cesaretlendiririm!
Aşağıdaki etiketler ile eşleşecektir.Ayrıca, etiket, nitelikleri ve değeri çıkarabilir
Pattern pattern = Pattern.compile("<(\\w+)(+.+)*>((.*))</\\1>");
Matcher matcher = pattern.matcher("<as testAttr='5'> TEST</as>");
if (matcher.find()) {
for (int i = 0; i < matcher.groupCount(); i++) {
System.out.println(i + ":" + matcher.group(i));
}
}
[Nasıl bir dize C# kullanarak HTML içermediğini doğrulamak için] bir
- 1. DataGrid bir sütun içeriyorsa nasıl bulunur?
- 2. NSArray'da bir dize nasıl bulunur?
- 3. Bir dize bir Dizeleri Listesi öğesinin herhangi bir öğesi içeriyorsa nasıl bulunur?
- 4. URL belirli bir dize içeriyorsa htaccess yönlendirmesi
- 5. Dize PHP'de 1 büyük harf içeriyorsa nasıl algılanır
- 6. Tüm emlak listeleri verileri nasıl bulunur?
- 7. Linux'ta bir dize içeren satırlar nasıl bulunur?
- 8. Bir dize yalnızca rakam/sayısal karakterler içeriyorsa nasıl kontrol edilir
- 9. HTML dize
- 10. jQuery (schema.org microformat) kullanarak meta verileri nasıl bulunur ve okunur?
- 11. Dizin liste değeri içeriyorsa ve ayrı olarak içeriyorsa ayrı olarak
- 12. Getir ve dize silme dize Çekirdek Verileri
- 13. HTML dosyasında dize bulma?
- 14. Dize altkümesiyle belirli bir metin içeriyorsa gözlemi bırakın()
- 15. Xpath - Sınıfının bir metni içeriyorsa, HTML öğesini alın
- 16. Bazı alt dizelerle başlayan listelerde dize dizinleri nasıl bulunur?
- 17. Intellij Idea'de statik dize sonucu birleştirme kod çalıştırmadan nasıl bulunur?
- 18. Dize içindeki HTML etiketlerini kaldırma
- 19. Hücre bir dizgi içeriyorsa
- 20. Bir para birimi için html kodu nasıl bulunur?
- 21. Bir HTML öğesini simpleHTMLdom kullanarak içerdiği şekilde nasıl bulunur?
- 22. HTML sayfasında rastgele bir kimlik nasıl bulunur (Salatalık/Capibara)
- 23. filtrelenmiş dizi içeriyorsa ng-göster
- 24. ContentEditable div odağı içeriyorsa,
- 25. Verileri
- 26. Öğeden ana form nasıl bulunur?
- 27. Dinamik verileri localStorage konumuna kaydedin ve .html yüklendiğinde bu verileri bir html tablosuna yükleyin.
- 28. Dizgemde bir '/' içeriyorsa 's ///' nasıl kullanabilirim?
- 29. Bir rol boşluk içeriyorsa AuthorizeAttribute nasıl yazılır
- 30. Güncelleniyor HTML verileri doğru öznitelik ancak sayfa
Olası kopyalar (http://stackoverflow.com/questions/204646/how-to- validate-that-a-string-doesnt-içerir-html-kullanarak-c-keskin) – nullpointer
OP bunu Java'da yapmak istiyor, bu nasıl bir kopya mı? –