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

    +157

    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
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    <?php
    
    // БИБЛИОТЕКА PHP: функции для работы с XML
    
    // ФУНКЦИЯ: установка значения
    //	&$strDoc	- текст документа
    //	$strField	- имя поля (в документе к именам полей нужно добавлять символ "1", например: Name1
    //	$strValue	- значение поля
    function DocXML_Value(&$strDoc, $strField, $strValue) {
    	// определение длины текста
    	if (!($intDoc = strlen($strDoc))) return;
    	// определение кода поля
    	$strCode = $strField."1";
    	// определение длины кода поля
    	if (!($intCode = strlen($strCode))) return;
    	// поиск поля
    	if (!($intPos = stripos($strDoc, $strCode))) return;
    	// преобразование значения в кодировку UTF-8
    	$strText = iconv("WINDOWS-1251", "UTF-8", $strValue);	
    	// определение результата
    	$strDoc = Left($strDoc, $intPos).$strText.Right($strDoc, $intDoc-$intPos-$intCode);
    }
    
    // ФУНКЦИЯ: получение текста таблицы
    //	&$strDoc	- исходный документ
    //	$strField	- имя поля (в документе к именам полей нужно добавлять символ "1", например: Name1
    function DocXML_Table(&$strDoc, $strField) {
    	// определение длины текста
    	if (!($intDoc = strlen($strDoc))) return '';
    	// определение кода поля
    	$strCode = ">".$strField."1<";
    	// определение длины кода поля
    	if (!($intCode = strlen($strCode))) return '';
    	// поиск поля
    	if (!($intPos = stripos($strDoc, $strCode))) return '';
    	// поиск тега <w:tbl> до поля
    	if (!($intBegin = strripos(Left($strDoc, $intPos),'<w:tbl>'))) return '';
    	// поиск тега </w:tbl> после поля
    	if (!($intEnd = stripos($strDoc, '</w:tbl>', $intPos))) return '';
    	// определение результата
    	$strRes = Left(Right($strDoc,$intDoc-$intBegin),$intEnd-$intBegin+strlen('</w:tbl>'));
    	// определение результата
    	return $strRes;
    }
    
    // ФУНКЦИЯ: получение текста шаблона строки
    //	&$strTable	- текст таблицы
    //	$strField	- имя поля (в документе к именам полей нужно добавлять символ "1", например: Name1
    function DocXML_Row(&$strTable, $strField) {
    	// определение длины текста
    	if (!($intTable = strlen($strTable))) return '';
    	// определение кода поля 
    	$strCode = ">".$strField."1<";
    	// определение длины кода поля
    	if (!($intCode = strlen($strCode))) return '';
    	// поиск поля
    	if (!($intPos = stripos($strTable, $strCode))) return '';
    	// поиск тега <w:tr> до поля
    	if (!($intBegin = strripos(Left($strTable, $intPos),'<w:tr>'))) return '';
    	// поиск тега </w:tr> после поля
    	if (!($intEnd = stripos($strTable, '</w:tr>', $intPos))) return '';
    	// определение результата
    	return Left(Right($strTable,$intTable-$intBegin),$intEnd-$intBegin+strlen('</w:tr>'));
    }
    
    // ФУНКЦИЯ: замена строки в таблице
    //	&$strTable	- текст таблицы
    //	$strField	- имя поля (в документе к именам полей нужно добавлять символ "1", например: Name1
    //	$strRow	- текст строки
    function DocXML_RowSet(&$strTable, $strField, $strRow) {
    	// определение длины текста
    	if (!($intTable = strlen($strTable))) return;
    	// определение кода поля
    	$strCode = ">".$strField."1<";
    	// определение длины кода поля
    	if (!($intCode = strlen($strCode))) return;
    	// поиск поля
    	if (!($intPos = stripos($strTable, $strCode))) return;
    	// поиск тега <w:tr> до поля
    	if (!($intBegin = strripos(Left($strTable, $intPos),'<w:tr>'))) return;
    	// поиск тега </w:tr> после поля
    	if (!($intEnd = stripos($strTable, '</w:tr>', $intPos))) return;
    	// определение результата
    	$strTable = Left($strTable, $intBegin).Right($strTable, $intTable-$intEnd-strlen('</w:tr>'));
    }
    
    // ФУНКЦИЯ: добавление строки в таблицу
    //	&$strTable	- текст таблицы
    //	$strRow	- текст строки
    function DocXML_RowAdd(&$strTable, $strRow) {
    	// определение длины текста
    	if (!($intTable = strlen($strTable))) return;
    	// определение результата
    	$strTable = Left($strTable, $intTable-strlen('</w:tbl>')).$strRow.'</w:tbl>';
    }

    Взято с SQL.ru http://www.sql.ru/forum/1141421/pomogite-prochitat-xml

    Запостил: QBatman, 08 Февраля 2015

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

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