Jelajahi Sumber

Fixed ZF-9220, parser didn't work well with lots of quotes.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21127 44c647ce-9c0f-0410-b52a-842ac1e357ba
kokx 16 tahun lalu
induk
melakukan
b61c6efd5e

+ 2 - 2
library/Zend/Markup/Parser/Bbcode.php

@@ -295,7 +295,7 @@ class Zend_Markup_Parser_Bbcode implements Zend_Markup_Parser_ParserInterface
                     break;
                 case self::STATE_PARSEVALUE:
                     $matches = array();
-                    $regex   = '#\G((?<quote>"|\')(?<valuequote>[^\\2]*)\\2|(?<value>[^\]\s]+))#';
+                    $regex   = '#\G((?<quote>"|\')(?<valuequote>.*?)\\2|(?<value>[^\]\s]+))#';
                     if (!preg_match($regex, $this->_value, $matches, null, $this->_pointer)) {
                         $this->_state = self::STATE_SCANATTRS;
                         break;
@@ -501,4 +501,4 @@ class Zend_Markup_Parser_Bbcode implements Zend_Markup_Parser_ParserInterface
         }
     }
 
-}
+}

+ 10 - 0
tests/Zend/Markup/BbcodeAndHtmlTest.php

@@ -520,6 +520,16 @@ BBCODE;
             $m->render('[table][tr][td]test[/td][/tr][/table]'));
     }
 
+    /**
+     * Test for ZF-9220
+     */
+    public function testUrlMatchCorrectly()
+    {
+        $m = $this->_markup;
+
+        $this->assertEquals('<a href="http://framework.zend.com/">test</a><a href="http://framework.zend.com/">test</a>',
+            $m->render('[url="http://framework.zend.com/"]test[/url][url="http://framework.zend.com/"]test[/url]'));
+    }
 }
 
 // Call Zend_Markup_BbcodeAndHtmlTest::main()