"\\1", // the pattern for underline (__...__) must come before the one for italic (_..._) "/_(.+?)_/" => "\\1", "/\\*\\*(.+?)\\*\\*/" => "\\1", "/\\[super:(.+?)\\]/i" => "\\1", "/\\[sub:(.+?)\\]/i" => "\\1", "/\\[permil\\]/" => "‰", "/\\[infinity\\]/" => "∞", "/\\[alpha\\]/" => "α", "/\\[beta\\]/" => "β", "/\\[gamma\\]/" => "γ", "/\\[delta\\]/" => "δ", "/\\[epsilon\\]/" => "ε", "/\\[zeta\\]/" => "ζ", "/\\[eta\\]/" => "η", "/\\[theta\\]/" => "θ", "/\\[iota\\]/" => "ι", "/\\[kappa\\]/" => "κ", "/\\[lambda\\]/" => "λ", "/\\[mu\\]/" => "μ", "/\\[nu\\]/" => "ν", "/\\[xi\\]/" => "ξ", "/\\[omicron\\]/" => "ο", "/\\[pi\\]/" => "π", "/\\[rho\\]/" => "ρ", "/\\[sigmaf\\]/" => "ς", "/\\[sigma\\]/" => "σ", "/\\[tau\\]/" => "τ", "/\\[upsilon\\]/" => "υ", "/\\[phi\\]/" => "φ", "/\\[chi\\]/" => "χ", "/\\[psi\\]/" => "ψ", "/\\[omega\\]/" => "ω", "/\\[Alpha\\]/" => "Α", "/\\[Beta\\]/" => "Β", "/\\[Gamma\\]/" => "Γ", "/\\[Delta\\]/" => "Δ", "/\\[Epsilon\\]/" => "Ε", "/\\[Zeta\\]/" => "Ζ", "/\\[Eta\\]/" => "Η", "/\\[Theta\\]/" => "Θ", "/\\[Iota\\]/" => "Ι", "/\\[Kappa\\]/" => "Κ", "/\\[Lambda\\]/" => "Λ", "/\\[Mu\\]/" => "Μ", "/\\[Nu\\]/" => "Ν", "/\\[Xi\\]/" => "Ξ", "/\\[Omicron\\]/" => "Ο", "/\\[Pi\\]/" => "Π", "/\\[Rho\\]/" => "Ρ", "/\\[Sigma\\]/" => "Σ", "/\\[Tau\\]/" => "Τ", "/\\[Upsilon\\]/" => "Υ", "/\\[Phi\\]/" => "Φ", "/\\[Chi\\]/" => "Χ", "/\\[Psi\\]/" => "Ψ", "/\\[Omega\\]/" => "Ω", "/(?:\"|")(.+?)(?:\"|")/" => "“\\1”", "/ +- +/" => " – " ); // EXTRACT AUTHOR'S LAST NAME // this function takes the contents of the author field and will extract the last name of a particular author (specified by position) // (e.g., setting '$authorPosition' to "1" will return the 1st author's last name) // Note: this function assumes that: // 1. within one author object, there's only *one* delimiter separating author name & initials! // 2. author objects are stored in the db as "", i.e., initials follow *after* the author's name! // Required Parameters: // 1. pattern describing delimiter that separates different authors // 2. pattern describing delimiter that separates author name & initials (within one author) // 3. position of the author whose last name shall be extracted (e.g., "1" will return the 1st author's last name) // 4. contents of the author field public static function extractAuthorsLastName( $oldBetweenAuthorsDelim, $oldAuthorsInitialsDelim, $authorPosition, $authorContents ) { $authorsArray = preg_split( "/" . $oldBetweenAuthorsDelim . "/", $authorContents ); // get a list of all authors for this record $authorPosition = $authorPosition - 1; // php array elements start with "0", so we decrease the authors position by 1 $singleAuthor = $authorsArray[$authorPosition]; // for the author in question, extract the full author name (last name & initials) $singleAuthorArray = preg_split( "/" . $oldAuthorsInitialsDelim . "/", $singleAuthor ); // then, extract author name & initials to separate list items $singleAuthorsLastName = $singleAuthorArray[0]; // extract this author's last name into a new variable return $singleAuthorsLastName; } // EXTRACT AUTHOR'S GIVEN NAME // this function takes the contents of the author field and will extract the given name of a particular author (specified by position) // (e.g., setting '$authorPosition' to "1" will return the 1st author's given name) // Required Parameters: // 1. pattern describing delimiter that separates different authors // 2. pattern describing delimiter that separates author name & initials (within one author) // 3. position of the author whose last name shall be extracted (e.g., "1" will return the 1st author's last name) // 4. contents of the author field public static function extractAuthorsGivenName( $oldBetweenAuthorsDelim, $oldAuthorsInitialsDelim, $authorPosition, $authorContents ) { $authorsArray = preg_split( "/" . $oldBetweenAuthorsDelim . "/", $authorContents ); // get a list of all authors for this record $authorPosition = $authorPosition - 1; // php array elements start with "0", so we decrease the authors position by 1 $singleAuthor = $authorsArray[$authorPosition]; // for the author in question, extract the full author name (last name & initials) $singleAuthorArray = preg_split( "/" . $oldAuthorsInitialsDelim . "/", $singleAuthor ); // then, extract author name & initials to separate list items if ( !empty($singleAuthorArray[1]) ) { $singleAuthorsGivenName = $singleAuthorArray[1]; // extract this author's last name into a new variable } else { $singleAuthorsGivenName = ''; } return $singleAuthorsGivenName; } // Perform search & replace actions on the given text input: // ('$includesSearchPatternDelimiters' must be a boolean value that specifies whether the leading and trailing slashes // are included within the search pattern ['true'] or not ['false']) public static function searchReplaceText( $sourceString, $includesSearchPatternDelimiters ) { // apply the search & replace actions defined in '$transtab_refbase_html' to the text passed in '$sourceString': foreach ( self::$transtab_refbase_html as $searchString => $replaceString ) { if ( !$includesSearchPatternDelimiters ) { $searchString = "/" . $searchString . "/"; // add search pattern delimiters } if ( preg_match($searchString, $sourceString ) ) { $sourceString = preg_replace( $searchString, $replaceString, $sourceString ); } } return $sourceString; } }