/ / रेगेक्स सत्यापन एचटीएमएल एन्कोडेड वर्णों सहित - PHP, regex

एचटीएमएल एन्कोडेड वर्णों सहित रेगेक्स सत्यापन - PHP, regex

मैं एक स्ट्रिंग (PHP और Regex) को सत्यापित करने की कोशिश कर रहा हूं और मैं विकल्प ए को सफलतापूर्वक सत्यापित करने के लिए चाहता हूं लेकिन विकल्प बी को मान्य करने के लिए बिल्कुल नहीं:

a) fsadgfsd!^_-@<>&lt;
OR
fsadgfsd!^_-@<>&gt;&lt;


b) fsadgfsd!^_-@<>&;
OR
fsadgfsd!^_-@<>;&&;

अब तक मेरे पास यह है:

/^[a-zA-Z0-9 !^_@<>-]+$/

जो <और> के HTML एन्कोडेड सबस्ट्रिंग को छोड़कर मेरे लिए सब कुछ मान्य कर रहा है और मैं इस चरण में इसके साथ एक ईंट की दीवार मार रहा हूं, किसी भी मदद की बहुत सराहना की।

असल में, मेरे मौजूदा regex के अलावा जोमेरे विशेष पात्रों से मेल खा रहा है, मुझे भी <या> के सटीक सबस्ट्रिंग से मिलान करने में सक्षम होना चाहिए, लेकिन & nbsp; से मेल नहीं खाता; अपने आप पर चरित्र।

कोड का उपयोग करने वाले कोड में प्रतिबंधों के कारण, मैं इसे सकारात्मक मानने से पहले डेटा को डीकोड करने में सक्षम होने के लिए पॉजिटोन में नहीं हूं ...

उत्तर:

उत्तर № 1 के लिए 1
$regex = "/^[w !^@<>-]+$/";


$string = "fsadgfsd!^_-@<>&gt;&lt;";
$string = html_entity_decode($string);
if (preg_match($regex, $string))
echo "ok";
// echo ok


$string = "fsadgfsd!^_-@<>;&&;";
$string = html_entity_decode($string);
if (preg_match($regex, $string))
echo "ok";
// echo nothing

डब्ल्यू [ए-जेए-जेड -9_] के लिए एक शॉर्टकट है

संपादित करें: html_entity_decode के बिना

$regex = "/^([w !^@<>-]*(&[glt]+;)*)+$/";


$string = "fsadgfsd!^_-@<>&gt;&lt;";
if (preg_match($regex, $string))
echo "ok";
// echo ok
echo "-------------";

$string = "fsadgfsd!^_-@<>;&&;";
if (preg_match($regex, $string))
echo "ok";
// echo nothing