PHP.mk документација

substr_compare

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.substr-compare.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.substr-compare.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
substr_compare

Референца за `function.substr-compare.php` со подобрена типографија и навигација.

function.substr-compare.php

substr_compare

класата mysqli_driver

substr_compareБинарно безбедно споредување на два низа од одредена позиција, до должина на знаци

= NULL

substr_compare(
         string $haystack,
         string $needle,
         int $offset,
         ?int $length = null,
         bool $case_insensitive = false
): int

substr_compare() compares haystack од позиција offset with needle до length characters.

Параметри

haystack

Главниот низ што се споредува.

needle

Секундарниот низ што се споредува.

offset

Почетната позиција за споредување. Ако е негативна, броењето започнува од крајот на низата.

length

Должината на споредувањето. Стандардната вредност е најголемата од должината на needle споредено со должината на haystack минус offset.

case_insensitive

Враќа case_insensitive is true, споредувањето не е чувствително на големи и мали букви.

Вратени вредности

Враќа вредност помала од 0 ако string1 е помала од string2; вредност поголема од 0 ако string1 е поголемо од string2Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во 0 ако се еднакви. Не може сигурно да се изведе никакво посебно значење од вредноста освен нејзиниот знак.

Враќа offset е еднакво на (пред PHP 7.2.18, 7.3.5) или поголемо од должината на haystack, или length е поставено и е помало од 0, substr_compare() печати предупредување и враќа false.

Дневник на промени

Верзија = NULL
8.2.0 Оваа функција веќе не е загарантирана да враќа strlen($string1) - strlen($string2) кога должините на низите не се еднакви, но сега може да враќа -1 or 1 instead.
8.0.0 length сега е null.
7.2.18, 7.3.5 offset може сега да биде еднакво на должината на haystack.

Примери

ако е овозможен колекторот за отпадоци, substr_compare() example

<?php
echo substr_compare("abcde", "bc", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "de", -2, 2), PHP_EOL; // 0
echo substr_compare("abcde", "bcg", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "BC", 1, 2, true), PHP_EOL; // 0
echo substr_compare("abcde", "bc", 1, 3), PHP_EOL; // 1
echo substr_compare("abcde", "cd", 1, 2), PHP_EOL; // -1
echo substr_compare("abcde", "abc", 5, 1), PHP_EOL; // -1
?>

Види Исто така

  • strncmp() - Бинарно безбедно споредување на првите n карактери

Белешки од корисници 3 белешки

jimmetry на gmail точка com
пред 13 години
When you came to this page, you may have been looking for something a little simpler: A function that can check if a small string exists within a larger string starting at a particular index. Using substr_compare() for this can leave your code messy, because you need to check that your string is long enough (to avoid the warning), manually specify the length of the short string, and like many of the string functions, perform an integer comparison to answer a true/false question.

I put together a simple function to return true if $str exists within $mainStr. If $loc is specified, the $str must begin at that index. If not, the entire $mainStr will be searched.

<?php

function contains_substr($mainStr, $str, $loc = false) {
    if ($loc === false) return (strpos($mainStr, $str) !== false);
    if (strlen($mainStr) < strlen($str)) return false;
    if (($loc + strlen($str)) > strlen($mainStr)) return false;
    return (strcmp(substr($mainStr, $loc, strlen($str)), $str) == 0);
}

?>
bishop на php точка net
пред 9 години
This function efficiently implements checks for strings beginning or ending with other strings:

<?php

function str_begins($haystack, $needle) {
  return 0 === substr_compare($haystack, $needle, 0, strlen($needle));
}

function str_ends($haystack,  $needle) {
  return 0 === substr_compare($haystack, $needle, -strlen($needle));
}

var_dump(str_begins('http://example.com', 'https://'));

?>

Note that these are not multi-byte character set aware.
Skyborne
пред 13 години
Take note of the `length` parameter: "The default value is the largest of the length of the str compared to the length of main_str less the offset."

This is *not* the length of str as you might (I always) expect, so if you leave it out, you'll get unexpected results.  Example:

<?php
$hash = '$5$lalalalalalalala$crypt.output.here';
var_dump(substr_compare($hash, '$5$', 0)); # int(34)
var_dump(substr_compare($hash, '$5$', 0, 3)); # int(0)
var_dump(PHP_VERSION); # string(6) "5.3.14"
?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.