1. PHP / Говнокод #7558

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    /**
    	 * Заменяет все вхождения короткого тега <param/> на длиную версию <param></param>
    	 * Заменяет все вхождения короткого тега <embed/> на длиную версию <embed></embed>
    	 * 
    	 */
    	protected function FlashParamParser($sText) {	
    		if (preg_match_all("@(<\s*param\s*name\s*=\s*\".*\"\s*value\s*=\s*\".*\")\s*/?\s*>(?!</param>)@Ui",$sText,$aMatch)) {				
    			foreach ($aMatch[1] as $key => $str) {
    				$str_new=$str.'></param>';				
    				$sText=str_replace($aMatch[0][$key],$str_new,$sText);				
    			}	
    		}
    		if (preg_match_all("@(<\s*embed\s*.*)\s*/?\s*>(?!</embed>)@Ui",$sText,$aMatch)) {				
    			foreach ($aMatch[1] as $key => $str) {
    				$str_new=$str.'></embed>';				
    				$sText=str_replace($aMatch[0][$key],$str_new,$sText);				
    			}	
    		}	
    		/**
    		 * Удаляем все <param name="wmode" value="*"></param>		 
    		 */
    		if (preg_match_all("@(<param\s.*name=\"wmode\".*>\s*</param>)@Ui",$sText,$aMatch)) {
    			foreach ($aMatch[1] as $key => $str) {
    				$sText=str_replace($aMatch[0][$key],'',$sText);
    			}
    		}
    		/**
    		 * А теперь после <object> добавляем <param name="wmode" value="opaque"></param>
    		 * Решение не фантан, но главное работает :)
    		 */
    		if (preg_match_all("@(<object\s.*>)@Ui",$sText,$aMatch)) {
    			foreach ($aMatch[1] as $key => $str) {
    				$sText=str_replace($aMatch[0][$key],$aMatch[0][$key].'<param name="wmode" value="opaque"></param>',$sText);
    			}
    		}
    		
    		return $sText;
    	}

    Запостил: DrFreez, 16 Августа 2011

    Комментарии (9) RSS

    • автор сам все сказал
      // Решение не фантан, но главное работает :)
      Ответить
      • не фонтан, это мягко сказано. заменить короткий тег на обычный можно одной строчкой T_T. хотя бы такой...
        $string = preg_replace('/<(param|embed)(([^\/>]|[<\/])*)(\/>|><\/(param|embed)>)/i', "<\\1\\2></\\1>", $string);

        с ходу накидал
        Ответить
    • Copyright © 2008 Mzhelskiy Maxim
      Ответить
      • http://liveexpert.ru/e/ort
        у него же на лице написано, что он эксперт. Создал свой хабр^W CMS с блекджеком и шюхами
        Ответить
    • опять пхп, опять регулярки, и опять парсинг тегов... не иссякнет пхпкод.ру.....
      Ответить
    • ><param/> на длиную версию <param>
      <param><param><paraduemsa>...
      Ответить
    • Офигеть название для функции - FlashParamParser
      Ответить

    Добавить комментарий