2017-02-14 3 views
0

Ich entwickle eine Website, die HTML Valid Tags verwendet, die in einem Array gespeichert sind, um sie mit den Eingaben der Benutzer in das System zu vergleichen. Ich habe derzeit das Array entwickelt, das alle HTML-Tags enthält, die ich benötige. Ich habe auch eine Funktion entwickelt, die die Benutzereingabe gegen Daten validiert, die innerhalb des Arrays gespeichert sind.Suche in meinem Array nach Werten, die ein bestimmtes Zeichen enthalten

Wenn es gültig ist, teilt es dem Benutzer mit, dass es akzeptiert wurde, und das gültige Tag wird dann in ein anderes Array eingefügt, das alle Tags enthält, die der Benutzer eingegeben hat.

Allerdings habe ich versucht, die Funktionalität zu erstellen, dass, wenn der Benutzer die Tags innerhalb des Systems eingibt, das Array nach Tags mit einem umgekehrten Schrägstrich gesucht wird/da dies alle schließenden Tags innerhalb des Arrays identifizieren wird.

Also meine Frage wäre, wie ich alle Datensätze innerhalb meiner AllowedTags Array extrahieren würde, die ein/Character enthalten und diese in einem neuen Array speichern.

<html> 
<head> 
</head> 
<body> 
<form id="HTMLValidation" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<p> HTML Code: <input type="text" name="code"> 
<p><input type="submit" name="submit" value="Validate Your Code!"/></p> 
</form> 
<?php 
//Depricated 
//$TagArray = $UserInput.split(""); 
if(isset($_POST['code'])) 
    { 
     $UserInput = htmlspecialchars($_POST['code']); 
     $InputtedTags = array(); 

     //Array Containing all of the VALID HTML TAGS. 
     $AllowedTags = array("&lt;html&gt;","&lt;head&gt","&lt;body&gt","&lt;div&gt","&lt;p&gt","&lt;b&gt","&lt;base&gt","&lt;link&gt","&lt;meta&gt","&lt;style&gt","&lt;title&gt","&lt;address&gt","&lt;article&gt","&lt;aside&gt","&lt;footer&gt","&lt;h1&gt","&lt;h2&gt","&lt;h3&gt","&lt;h4&gt","&lt;h5&gt","&lt;h6&gt","&lt;header&gt","&lt;hgroup&gt","&lt;nav&gt","&lt;selection&gt","&lt;dd&gt","&lt;d1&gt","&lt;dt&gt","&lt;figcaption&gt","&lt;figure&gt","&lt;hr&gt","&lt;li&gt","&lt;main&gt","&lt;ol&gt","&lt;pre&gt","&lt;ul&gt","&lt;a&gt","&lt;abbr&gt","&lt;b&gt","&lt;bdi&gt","&lt;bdo&gt","&lt;br&gt","&lt;cite&gt","&lt;code&gt","&lt;data&gt","&lt;dfn&gt","&lt;em&gt","&lt;i&gt","&lt;kbd&gt","&lt;mark&gt","&lt;q&gt","&lt;rp&gt","&lt;rt&gt","&lt;rtc&gt","&lt;ruby&gt","&lt;s&gt","&lt;samp&gt","&lt;small&gt","&lt;span&gt","&lt;strong&gt","&lt;sub&gt","&lt;sup&gt","&lt;time&gt","&lt;u&gt","&lt;var&gt","&lt;wbr&gt","&lt;area&gt","&lt;audio&gt","&lt;img&gt","&lt;map&gt","&lt;track&gt","&lt;video&gt","&lt;embed&gt","&lt;object&gt","&lt;param&gt","&lt;source&gt","&lt;canvas&gt","&lt;noscript&gt","&lt;script&gt","&lt;del&gt","&lt;ins&gt","&lt;caption&gt","&lt;col&gt","&lt;colgroup&gt","&lt;table&gt","&lt;tbody&gt","&lt;td&gt","&lt;tfoot&gt","&lt;th&gt","&lt;thead&gt","&lt;tr&gt","&lt;button&gt","&lt;datalist&gt","&lt;fieldset&gt","&lt;form&gt","&lt;input&gt","&lt;label&gt","&lt;legend&gt","&lt;meter&gt","&lt;optgroup&gt","&lt;option&gt","&lt;output&gt","&lt;progress&gt","&lt;select&gt","&lt;textarea&gt","&lt;details&gt","&lt;dialog&gt","&lt;menu&gt","&lt;menuitem&gt","&lt;summary&gt","&lt;shadow&gt","&lt;slot&gt","&lt;template&gt","&lt;acronym&gt","&lt;applet&gt","&lt;basefont&gt","&lt;big&gt","&lt;blink&gt","&lt;center&gt","&lt;command&gt","&lt;content&gt","&lt;dir&gt","&lt;element&gt","&lt;font&gt","&lt;frame&gt","&lt;frameset&gt","&lt;isindex&gt","&lt;keygen&gt","&lt;listing&gt","&lt;marquee&gt","&lt;multicol&gt","&lt;nextid&gt","&lt;noembed&gt","&lt;plaintext&gt","&lt;shadow&gt","&lt;spacer&gt","&lt;strike&gt","&lt;tt&gt","&lt;xmp&gt","&lt;/html&gt","&lt;/head&gt","&lt;/body&gt","&lt;/div&gt","&lt;/p&gt","&lt;/b&gt","&lt;/base&gt","&lt;/link&gt","&lt;/meta&gt","&lt;/style&gt","&lt;/title&gt","&lt;/address&gt","&lt;/article&gt","&lt;/aside&gt","&lt;/footer&gt","&lt;/h1&gt","&lt;/h2&gt","&lt;/h3&gt","&lt;/h4&gt","&lt;/h5&gt","&lt;/h6&gt","&lt;/header&gt","&lt;/hgroup&gt","&lt;/nav&gt","&lt;/selection&gt","&lt;/dd&gt","&lt;/d1&gt","&lt;/dt&gt","&lt;/figcaption&gt","&lt;/figure&gt","&lt;/hr&gt","&lt;/li&gt","&lt;/main&gt","&lt;/ol&gt","&lt;/pre&gt","&lt;/ul&gt","&lt;/a&gt","&lt;/abbr&gt","&lt;/b&gt","&lt;/bdi&gt","&lt;/bdo&gt","&lt;/br&gt","&lt;/cite&gt","&lt;/code&gt","&lt;/data&gt","&lt;/dfn&gt","&lt;/em&gt","&lt;/i&gt","&lt;/kbd&gt","&lt;/mark&gt","&lt;/q&gt","&lt;/rp&gt","&lt;/rt&gt","&lt;/rtc&gt","&lt;/ruby&gt","&lt;/s&gt","&lt;/samp&gt","&lt;/small&gt","&lt;/span&gt","&lt;/strong&gt","&lt;/sub&gt","&lt;/sup&gt","&lt;/time&gt","&lt;/u&gt","&lt;/var&gt","&lt;/wbr&gt","&lt;/area&gt","&lt;/audio&gt","&lt;/img&gt","&lt;/map&gt","&lt;/track&gt","&lt;/video&gt","&lt;/embed&gt","&lt;/object&gt","&lt;/param&gt","&lt;/source&gt","&lt;/canvas&gt","&lt;/noscript&gt","&lt;/script&gt","&lt;/del&gt","&lt;/ins&gt","&lt;/caption&gt","&lt;/col&gt","&lt;/colgroup&gt","&lt;/table&gt","&lt;/tbody&gt","&lt;/td&gt","&lt;/tfoot&gt","&lt;/th&gt","&lt;/thead&gt","&lt;/tr&gt","&lt;/button&gt","&lt;/datalist&gt","&lt;/fieldset&gt","&lt;/form&gt","&lt;/input&gt","&lt;/label&gt","&lt;/legend&gt","&lt;/meter&gt","&lt;/optgroup&gt","&lt;/option&gt","&lt;/output&gt","&lt;/progress&gt","&lt;/select&gt","&lt;/textarea&gt","&lt;/details&gt","&lt;/dialog&gt","&lt;/menu&gt","&lt;/menuitem&gt","&lt;/summary&gt","&lt;/shadow&gt","&lt;/slot&gt","&lt;/template&gt","&lt;/acronym&gt","&lt;/applet&gt","&lt;/basefont&gt","&lt;/big&gt","&lt;/blink&gt","&lt;/center&gt","&lt;/command&gt","&lt;/content&gt","&lt;/dir&gt","&lt;/element&gt","&lt;/font&gt","&lt;/frame&gt","&lt;/frameset&gt","&lt;/isindex&gt","&lt;/keygen&gt","&lt;/listing&gt","&lt;/marquee&gt","&lt;/multicol&gt","&lt;/nextid&gt","&lt;/noembed&gt","&lt;/plaintext&gt","&lt;/shadow&gt","&lt;/spacer&gt","&lt;/strike&gt","&lt;/tt&gt","&lt;/xmp&gt"); 
     //$Tags = implode(",",$AllowedTags); 
     //$OpenTags = implode(",",$AllowedTags); 

     //Search Allowed Tags Array For Values Containing a Backslash(/) 
     $CloseTags = implode(" ",$AllowedTags); 
     $needle = '/'; 
     $ret = array_keys(array_filter($AllowedTags, function($var) use ($needle){ 
        return strpos($var, $needle) !== false;})); 
     print_r($ret); 

     //Check What The User Has Inputted Into The System against the AllowedTags Array 
     //If it is true then display to the user the tag is valid 
     //Push The value that the user entered onto the InputtedTags Array 
     foreach($AllowedTags as $data) 
      { 

       if(strpos($UserInput,$data) !==false) 
        { 
         echo($UserInput. ": Valid Tags"); 
         array_push($InputtedTags,$UserInput); 
        } 

      } 
     print_r($InputtedTags); 
    } 
?> 
</body> 
</html> 
+0

Was stimmt nicht mit dem Code, der '$ ret' setzt? – Barmar

+0

Sie sollten die Funktion array_filter() verwenden. –

+0

Warum verwenden Sie 'array_keys()' auf das Ergebnis von 'array_filter()'? Wenn Sie die Liste der Tags haben wollen, gibt 'array_filter()' es zurück. – Barmar

Antwort

1

„wie ich alle Datensätze innerhalb meiner AllowedTags Array extrahiert, die einen/Character enthalten und solche, in ein neues Array speichern“

$filtered_tags = array_filter($AllowedTags, function($val) { 
     return (bool)preg_match('/\//', $val); 
    }); 

    print_r($filtered_tags); 
+0

Danke dafür funktionierte es wie vorgesehen danke für Ihre Eingabe. –

0

Wenn der Benutzer die Tags ohne eckige Klammern stellt und nur Schreiben Sie den Tag-Namen (sagen wir "Kopf"), dann können Sie vielleicht einen Backslash() am Anfang der Benutzereingabe-Zeichenfolge verketten, während Sie nach dem schließenden Tag in den $ AllowedTags suchen. Es tut mir leid, wenn ich die Frage missverstanden habe.

+0

Der Benutzer gibt auch die Tags ein, aber ich habe das Problem behoben, das ich ursprünglich hatte Vielen Dank für Ihre Eingabe –

Verwandte Themen