libraries/tbs/plugins/tbs_plugin_opentbs.php
function OpenDoc_CleanRsID(&$Txt) {
	
		// Get all style names about RSID for <span> elements
		$styles = array();
		$p = 0;
		while ( ($el = clsTbsXmlLoc::FindStartTagHavingAtt($Txt, 'officeooo:rsid', $p)) !== false) {
			// If the <style:text-properties> element has only this attribute then its length is 50.
			if ($el->GetLen() < 60) {
				if ($par = clsTbsXmlLoc::FindStartTag($Txt, 'style:style', $el->PosBeg, false)) {
					if ($name = $par->GetAttLazy('style:name')) {
						$styles[] = $name;
					}
				}
			}
			$p = $el->PosEnd;
		}
		
		// Delete <text:span> elements
		$xe = '</text:span>';
		$xe_len = strlen($xe);
		foreach ($styles as $name) {
			$p = 0;
			$x = '<text:span text:style-name="' . $name . '">';
			$x_len = strlen($x);
			while ( ($p = strpos($Txt, $x, $p)) !== false) {
				$pe = strpos($Txt, $xe, $p);
				$src = substr($Txt, $p + $x_len, $pe - $p - $x_len);
				$Txt = substr_replace($Txt, $src, $p, $pe + $xe_len - $p);
				$p = $p + strlen($src);
			}
		}
	
	}
function OpenDoc_CleanRsID(&$Txt) {
	
		// Get all style names about RSID for <span> elements
		$styles = array();
		$p = 0;
		while ( ($el = clsTbsXmlLoc::FindStartTagHavingAtt($Txt, 'officeooo:rsid', $p)) !== false) {
			// If the <style:text-properties> element has only this attribute then its length is 50.
			if ($el->GetLen() < 60) {
				if ($par = clsTbsXmlLoc::FindStartTag($Txt, 'style:style', $el->PosBeg, false)) {
					if ($name = $par->GetAttLazy('style:name')) {
						$styles[] = $name;
					}
				}
			}
			$p = $el->PosEnd;
		}
		
		// Delete <text:span> elements
		$xe = '</text:span>';
		$xe_len = strlen($xe);
		foreach ($styles as $name) {
			$p = 0;
			$x = '<text:span text:style-name="' . $name . '">';
			$x_len = strlen($x);
			while ( ($p = strpos($Txt, $x, $p)) !== false) {
				$pe = strpos($Txt, $xe, $p);
				$src = substr($Txt, $p + $x_len, $pe - $p - $x_len);
				$Txt = substr_replace($Txt, $src, $p, $pe + $xe_len - $p);
				$p = $p + strlen($src);
			}
		}
	
	}
function OpenDoc_CleanRsID ( & $ Txt ) { // Get all style names about RSID for <span> elements $ styles = array ( ) ; $ p = 0 ; while ( ( $ el = clsTbsXmlLoc :: FindStartTagHavingAtt ( $ Txt , 'officeooo:rsid' , $ p ) ) !== false ) { // If the <style:text-properties> element has only this attribute then its length is 50. if ( $ el -> GetLen ( ) < 60 ) { if ( $ par = clsTbsXmlLoc :: FindStartTag ( $ Txt , 'style:style' , $ el -> PosBeg , false ) ) { if ( $ name = $ par -> GetAttLazy ( 'style:name' ) ) { $ styles [ ] = $ name ; } } } $ p = $ el -> PosEnd ; } // Delete <text:span> elements $ xe = '</text:span>' ; $ xe_len = strlen ( $ xe ) ; foreach ( $ styles as $ name ) { $ p = 0 ; $ x = '<text:span text:style-name="' . $ name . '">' ; $ x_len = strlen ( $ x ) ; while ( ( $ p = strpos ( $ Txt , $ x , $ p ) ) !== false ) { $ pe = strpos ( $ Txt , $ xe , $ p ) ; $ src = substr ( $ Txt , $ p + $ x_len , $ pe - $ p - $ x_len ) ; $ Txt = substr_replace ( $ Txt , $ src , $ p , $ pe + $ xe_len - $ p ) ; $ p = $ p + strlen ( $ src ) ; } } }
OpenOffice documents
OpenOffice documents