static public substr_count ( $haystack, $needle ) : integer | ||
$haystack | string Input string to search | |
$needle | string String to search within $haystack for | |
return | integer | Count of number of times $needle appeared in $haystack |
/** * Parse SQL content into individual SQL statements. * @param $sql string * @return array */ function &parseStatements(&$sql) { $statements = array(); $statementsTmp = explode($this->statementDelim, $sql); $currentStatement = ''; $numSingleQuotes = $numEscapedSingleQuotes = 0; // This method for parsing the SQL statements was adapted from one used in phpBB (http://www.phpbb.com/) for ($i = 0, $count = count($statementsTmp); $i < $count; $i++) { // Get total number of single quotes in string $numSingleQuotes += PKPString::substr_count($statementsTmp[$i], "'"); // Get number of escaped single quotes $numEscapedSingleQuotes += PKPString::regexp_match_all("/(?<!\\\\)(\\\\\\\\)*\\\\'/", $statementsTmp[$i], $matches); $currentStatement .= $statementsTmp[$i]; if (($numSingleQuotes - $numEscapedSingleQuotes) % 2 == 0) { // Even number of unescaped single quotes, so statement must be complete if (trim($currentStatement) !== '') { array_push($statements, trim($currentStatement)); } $currentStatement = ''; $numSingleQuotes = $numEscapedSingleQuotes = 0; } else { // The statement is not complete, the delimiter must be inside the statement $currentStatement .= $this->statementDelim; } } return $statements; }