Jump to content

WANTED: Sanitizer whith regex!


NorbertH
 Share

Recommended Posts

I really would like to see a sanitzer that uses a regex!!

$sanitize->regex($value, $regex);

Simply return empty if the value doesn't match.

It would be even better if we got an extra option for replacements and or callback functions.  If i have seen it right, there are even sanitizer that use HTMLpurifier so why is there no regex implemented as its one of PHP's most powerfull features ?

Sanitizer since PW 2.6.14 integrates nicely whith $input and so on , so using a seperate preg_match()/preg_replace()  isn't as elegant as using sanitizer.

 

Link to comment
Share on other sites

It's possible! From the Sanitizer class description:

Quote

* Modules may also add methods to the Sanitizer as needed i.e. $this->sanitizer->addHook('myMethod', $myClass, 'myMethod'); * See the Wire class definition for more details about the addHook method.

Cheers:)

  • Like 4
Link to comment
Share on other sites

54 minutes ago, Wanze said:

It's possible! From the Sanitizer class description:

Quote

* Modules may also add methods to the Sanitizer as needed i.e. $this->sanitizer->addHook('myMethod', $myClass, 'myMethod'); * See the Wire class definition for more details about the addHook method.

Cheers:)

13 hours ago, NorbertH said:

Thinking this through it would be even greater if you could add custom sanitizer as modules.  

Would be nice to see a little tutorial when you manage to do it 🙂 

  • Like 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By wwwouter
      Some context: I want to use PHP variables in my CSS (more info below) and found a solution on CSS-tricks that looks fairly elegant and somewhat solid to me. It's pretty simple, I created a file style.css.php inside the site/templates/ directory and load that in my page head. In style.css.php is the following:
      <?php header("Content-type: text/css; charset: UTF-8"); header("Charset:utf-8"); if ($homepage->hero_image) { echo <<<CSS .hero { background: url($homepage->hero_image->url) no-repeat; } CSS; } ?> Because of the following RewriteCond (line 373) in the htaccess file the server sends a 403 error back when the file is requested:
      # Block access to any PHP or markup files in /site/templates/ or /site-*/templates/ RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/.*\.(php|html?|tpl|inc))($|/) [NC,OR] (My htaccess file is @version 3.0 and @htaccessVersion 301)
      This is how I thought I could fix that (based on these answers on stack overflow) but it does not work:
      # Block access to any PHP or markup files in /site/templates/ or /site-*/templates/ RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/((?!style\.css).)*\.(php|html?|tpl|inc))($|/) [NC,OR] I tested the rule with htacess tester and htaccess check and both worked for me, but on my site I still get a 403 instead of the file.
      I'm working on localhost, using MAMP (not sure if that's relevant).
      A bit more about what I want to do achieve specifically:
      I want to use an image as a background-image for an element, not place it as an image. This image is provided by the user via a field and can therefore change.
      I know I can achieve this like this:
      echo "<section class='hero' style='background-image: url($page->hero_image->url)'></section>"; But I would prefer a method other than inlining because of scalability and cleanliness. (I admit the extra link in the page head is not ideal either)
       
      P.s. this is my first post here, I hope it's submitted in the right forum and my explanation is clear.
    • By phil_s
      Hi foks
      (Not sure if this would make more sense in the dev forum, feel free to move if necessary...)
      I am trying to do the following...

      In $page->introtext (a textfield with markdown parser)
      1. find the link in which the href matches my $current_urlsegment var
      2. Change the href to $link_to_overview
      3. Add a ".active" CSS class to it
      4. Get the whole thing back into the array
      5. Output the array.
      To add a bit of context:
      - This is for a text that contains links to segments of a page. When a user clicks on a link (selects a segment), the surrounding text is faded out, and the selected link turns into a "back to overview" button, so to say. (Sounds even more insane, but could work quite intuitively in practice) 
      - So far, I did all of this with js, using a custom data attribute with the current segment to match against the links, but long story short it would be much easier if no js would be involved.

      As far as I understand it should be rather simple to do this with regex, but I'm struggling with the logic of it. 
      I started with the following:
      $text = $page->txt_projects_intro; $currentsegment = '/projects/' + $sanitizer->pageName($input->urlSegment1) + '/'; $reg_ex_anchor = '/<a [^>]*\bhref\s*=\s*"\K[^"]*' + $currentsegment + '[^"]*/'; $reg_ex_onlyanchorpath = '[^>]*\bhref\s*=\s*"\K[^"]*' + $currentsegment + '[^"]*'; if(preg_match($reg_ex_anchor, $text, ...)) { $content .= preg_replace... // brain melts } Which is when I realized that I have now googled myself way out of my coding league
      So: Is the above going into the right direction? Is there an easier way, maybe even involving PW selectors that I don't know about?
      Cheers Guys!
       
       
×
×
  • Create New...