diff --git a/Command/LintCommand.php b/Command/LintCommand.php index 98eb8e15..7971decc 100644 --- a/Command/LintCommand.php +++ b/Command/LintCommand.php @@ -163,7 +163,7 @@ private function displayTxt(SymfonyStyle $io, array $filesInfo): int $io->text(' ERROR '.($info['file'] ? sprintf(' in %s', $info['file']) : '')); $io->text(sprintf(' >> %s', $info['message'])); - if (false !== strpos($info['message'], 'PARSE_CUSTOM_TAGS')) { + if (str_contains($info['message'], 'PARSE_CUSTOM_TAGS')) { $suggestTagOption = true; } } @@ -188,7 +188,7 @@ private function displayJson(SymfonyStyle $io, array $filesInfo): int ++$errors; } - if (isset($v['message']) && false !== strpos($v['message'], 'PARSE_CUSTOM_TAGS')) { + if (isset($v['message']) && str_contains($v['message'], 'PARSE_CUSTOM_TAGS')) { $v['message'] .= ' Use the --parse-tags option if you want parse custom tags.'; } }); diff --git a/Dumper.php b/Dumper.php index dcb104cc..866634a8 100644 --- a/Dumper.php +++ b/Dumper.php @@ -68,7 +68,7 @@ public function dump($input, int $inline = 0, int $indent = 0, int $flags = 0): $output .= "\n"; } - if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value) && false !== strpos($value, "\n") && false === strpos($value, "\r")) { + if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value) && str_contains($value, "\n") && !str_contains($value, "\r")) { // If the first line starts with a space character, the spec requires a blockIndicationIndicator // http://www.yaml.org/spec/1.2/spec.html#id2793979 $blockIndentationIndicator = (' ' === substr($value, 0, 1)) ? (string) $this->indentation : ''; @@ -97,7 +97,7 @@ public function dump($input, int $inline = 0, int $indent = 0, int $flags = 0): if ($value instanceof TaggedValue) { $output .= sprintf('%s%s !%s', $prefix, $dumpAsMap ? Inline::dump($key, $flags).':' : '-', $value->getTag()); - if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value->getValue()) && false !== strpos($value->getValue(), "\n") && false === strpos($value->getValue(), "\r\n")) { + if (Yaml::DUMP_MULTI_LINE_LITERAL_BLOCK & $flags && \is_string($value->getValue()) && str_contains($value->getValue(), "\n") && !str_contains($value->getValue(), "\r\n")) { // If the first line starts with a space character, the spec requires a blockIndicationIndicator // http://www.yaml.org/spec/1.2/spec.html#id2793979 $blockIndentationIndicator = (' ' === substr($value->getValue(), 0, 1)) ? (string) $this->indentation : ''; diff --git a/Inline.php b/Inline.php index ea80ae52..afd6449d 100644 --- a/Inline.php +++ b/Inline.php @@ -163,7 +163,7 @@ public static function dump($value, int $flags = 0): string return 'false'; case \is_int($value): return $value; - case is_numeric($value) && false === strpos($value, "\f") && false === strpos($value, "\n") && false === strpos($value, "\r") && false === strpos($value, "\t") && false === strpos($value, "\v"): + case is_numeric($value) && false === strpbrk($value, "\f\n\r\t\v"): $locale = setlocale(\LC_NUMERIC, 0); if (false !== $locale) { setlocale(\LC_NUMERIC, 'C'); @@ -377,7 +377,7 @@ private static function parseSequence(string $sequence, int $flags, int &$i = 0, $value = self::parseScalar($sequence, $flags, [',', ']'], $i, null === $tag, $references); // the value can be an array if a reference has been resolved to an array var - if (\is_string($value) && !$isQuoted && false !== strpos($value, ': ')) { + if (\is_string($value) && !$isQuoted && str_contains($value, ': ')) { // embedded mapping? try { $pos = 0; @@ -565,7 +565,7 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer $scalar = trim($scalar); $scalarLower = strtolower($scalar); - if (0 === strpos($scalar, '*')) { + if (str_starts_with($scalar, '*')) { if (false !== $pos = strpos($scalar, '#')) { $value = substr($scalar, 1, $pos - 2); } else { @@ -595,11 +595,11 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer return false; case '!' === $scalar[0]: switch (true) { - case 0 === strpos($scalar, '!!str '): + case str_starts_with($scalar, '!!str '): return (string) substr($scalar, 6); - case 0 === strpos($scalar, '! '): + case str_starts_with($scalar, '! '): return substr($scalar, 2); - case 0 === strpos($scalar, '!php/object'): + case str_starts_with($scalar, '!php/object'): if (self::$objectSupport) { if (!isset($scalar[12])) { return false; @@ -613,7 +613,7 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer } return null; - case 0 === strpos($scalar, '!php/const'): + case str_starts_with($scalar, '!php/const'): if (self::$constantSupport) { if (!isset($scalar[11])) { return ''; @@ -631,9 +631,9 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer } return null; - case 0 === strpos($scalar, '!!float '): + case str_starts_with($scalar, '!!float '): return (float) substr($scalar, 8); - case 0 === strpos($scalar, '!!binary '): + case str_starts_with($scalar, '!!binary '): return self::evaluateBinaryScalar(substr($scalar, 9)); default: throw new ParseException(sprintf('The string "%s" could not be parsed as it uses an unsupported built-in tag.', $scalar), self::$parsedLineNumber, $scalar, self::$parsedFilename); diff --git a/Parser.php b/Parser.php index 68efea6c..472e9681 100644 --- a/Parser.php +++ b/Parser.php @@ -170,7 +170,7 @@ private function doParse(string $value, int $flags) } // array - if (isset($values['value']) && 0 === strpos(ltrim($values['value'], ' '), '-')) { + if (isset($values['value']) && str_starts_with(ltrim($values['value'], ' '), '-')) { // Inline first child $currentLineNumber = $this->getRealCurrentLineNb(); @@ -179,7 +179,7 @@ private function doParse(string $value, int $flags) $sequenceYaml .= "\n".$this->getNextEmbedBlock($sequenceIndentation, true); $data[] = $this->parseBlock($currentLineNumber, rtrim($sequenceYaml), $flags); - } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) { + } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || str_starts_with(ltrim($values['value'], ' '), '#')) { $data[] = $this->parseBlock($this->getRealCurrentLineNb() + 1, $this->getNextEmbedBlock(null, true) ?? '', $flags); } elseif (null !== $subTag = $this->getLineTag(ltrim($values['value'], ' '), $flags)) { $data[] = new TaggedValue( @@ -211,7 +211,7 @@ private function doParse(string $value, int $flags) } } elseif ( self::preg_match('#^(?P(?:![^\s]++\s++)?(?:'.Inline::REGEX_QUOTED_STRING.'|(?:!?!php/const:)?[^ \'"\[\{!].*?)) *\:(( |\t)++(?P.+))?$#u', rtrim($this->currentLine), $values) - && (false === strpos($values['key'], ' #') || \in_array($values['key'][0], ['"', "'"])) + && (!str_contains($values['key'], ' #') || \in_array($values['key'][0], ['"', "'"])) ) { if ($context && 'sequence' == $context) { throw new ParseException('You cannot define a mapping item when in a sequence.', $this->currentLineNb + 1, $this->currentLine, $this->filename); @@ -306,7 +306,7 @@ private function doParse(string $value, int $flags) $subTag = null; if ($mergeNode) { // Merge keys - } elseif (!isset($values['value']) || '' === $values['value'] || 0 === strpos($values['value'], '#') || (null !== $subTag = $this->getLineTag($values['value'], $flags)) || '<<' === $key) { + } elseif (!isset($values['value']) || '' === $values['value'] || str_starts_with($values['value'], '#') || (null !== $subTag = $this->getLineTag($values['value'], $flags)) || '<<' === $key) { // hash // if next line is less indented or equal, then it means that the current value is null if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) { @@ -453,7 +453,7 @@ private function doParse(string $value, int $flags) throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } - if (false !== strpos($line, ': ')) { + if (str_contains($line, ': ')) { @trigger_error('Support for mapping keys in multi-line blocks is deprecated since Symfony 4.3 and will throw a ParseException in 5.0.', \E_USER_DEPRECATED); } @@ -716,7 +716,7 @@ private function moveToPreviousLine(): bool */ private function parseValue(string $value, int $flags, string $context) { - if (0 === strpos($value, '*')) { + if (str_starts_with($value, '*')) { if (false !== $pos = strpos($value, '#')) { $value = substr($value, 1, $pos - 2); } else { @@ -803,7 +803,7 @@ private function parseValue(string $value, int $flags, string $context) $parsedValue = Inline::parse($value, $flags, $this->refs); - if ('mapping' === $context && \is_string($parsedValue) && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && false !== strpos($parsedValue, ': ')) { + if ('mapping' === $context && \is_string($parsedValue) && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && str_contains($parsedValue, ': ')) { throw new ParseException('A colon cannot be used in an unquoted mapping value.', $this->getRealCurrentLineNb() + 1, $value, $this->filename); } @@ -1073,7 +1073,7 @@ private function isNextLineUnIndentedCollection(): bool */ private function isStringUnIndentedCollectionItem(): bool { - return '-' === rtrim($this->currentLine) || 0 === strpos($this->currentLine, '- '); + return '-' === rtrim($this->currentLine) || str_starts_with($this->currentLine, '- '); } /**