Comments (6)
@rhukster Just wanted to clarify: this is not what I believe to be related, I know that it's caused by many unclosed shortcodes, because such input causes RegularParser
to open many recursive calls to parser rules, that's how it works. It is not your or anyone else's fault (first of all it's my fault as an author :)), just a statement of problem to solve that I'm already trying to implement.
from shortcode.
You might want to look at my "Ideas" suggestions that could help with performance here. Cheers!
from shortcode.
@rhukster I merged the performance improvements PR to master, but I found some issues with parsing correctness when dealing with complex nested cases so please use RegexParser
for now, I'll give you an update once they will be resolved.
from shortcode.
@rhukster I think I fixed the issue in 4cda52f , could you please test if current dev-master
matches your expectations?
from shortcode.
I just tested your latest dev-master. The RegularParser is now much improved! As you say it renders in about 500ms on the 'test page'. No more errors and timeouts! I'll probably continue to use Regex or Wordpress parser as they are an order of magnitude faster still (Regex ~40ms, and Wordpress ~20ms).
What would the advantage be to using the RegularParser over the Regex or Wordpress one?
from shortcode.
Thanks, could you also help @giansi resolve problems in #29? If you say that this issue is resolved, I only need to know if his issue is something to fix before tagging new release.
As for the advantages of RegularParser
- the most important one is parsing correctness impossible to achieve with regular expressions. Say that you have text like [x][x][x][/x][/x][/x]
(shortcodes nested multiple levels with the same names). Regex is unable to process it correctly as it'll always see it like [x][x][x][/x]
(first closing tag always closes first matching opening tag), even recursive capture groups (?R)
is not going to help (regex recursion is more like inner repetition, not true recursion). I could possibly match only opening / closing tag fragments and try to analyze them (I just came up with this idea, maybe worth trying?) but then it's be basically RegexParser
with RegularParser
's internals.
from shortcode.
Related Issues (20)
- mb_strpos() 3rd parameter is not nullable in PHP 8.1 HOT 2
- [question] Convert content with shortcodes into Json string ? HOT 2
- (question) Also retrieve content outside shortcodes when parsing HOT 3
- Nested shortcodes HOT 4
- facade process not working HOT 3
- On large HTML files, RegularParser does not fire any handler. HOT 12
- RegularParser = Uncaught Error: Maximum function nesting level of '256' reached, aborting! HOT 9
- regular parser throws exception with `param=0` HOT 4
- Method getParameter returns value with quotes HOT 4
- Large file not firing all shortcodes with Regular Parser HOT 4
- Parse error with Vietnamese characters or open and close tag only HOT 6
- I made a new Shortcode library - Inspired by yours HOT 6
- PHP 7.4 issues HOT 3
- mb_strrpos() 3rd parameter deprecated in PHP 7.4 HOT 2
- Custom Short Codes HOT 3
- Multiple options in one add handler HOT 2
- Nested Shortcode for foreach loop HOT 2
- Is it possible to use this without composer? HOT 5
- Is there any built-in method to strip all shortcodes in provided text ? HOT 4
- Issue with Nested shortcodes HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shortcode.