Я хотел бы проверить, начинается ли строка (json), которая была отправлена с помощью вызова curl, с указанной подстрокой c. Когда я продолжал получать возврат FALSE
вместо TRUE
, я пытался отладить его. Сначала я изменил свой код так, чтобы он принимал $_GET
вместо $_POST
, чтобы я мог передать строку запроса в URL. Я всегда очищаю передаваемые данные, но, похоже, моя проблема связана с этим.
Я сделал echo var_dump();
для данных и увидел, что число строк не равно для и без очистки.
Это json: [{"userProfileUrl":"/users/jDoe","avatar":"/images/1.jpg","name":"John Doe","id":1}]
Вот так выглядит URL для цели отладки:
example.com? File = [{"userProfileUrl" : "/ users / jDoe", "avatar": "/ images / 1.jpg", "name": "John Doe", "id": 1}]
Это код для выполнения проверка:
function verifyFileStart($string, $startString)
{
$len = strlen($startString);
return (substr($string, 0, $len) === $startString);
}
Это с очисткой:
<?php
define("STARTSWITH", '[{"userProfileUrl":"');
$file = $_GET['file'];
// With Sanitize
$file = filter_var($file, FILTER_SANITIZE_STRING);
$part = STARTSWITH;
echo var_dump(verifyFileStart($file, $part));
echo nl2br("\n\n");
echo var_dump($file);
echo nl2br("\n\n");
echo var_dump($part);
// Here is the function (verifyFileStart) that does the checking
?>
var_dump () Вывод:
bool(false)
string(128) "[{"userProfileUrl":"/users/jDoe","avatar":"1","name":"John Doe","id":1}]"
string(20) "[{"userProfileUrl":""
Это без очистки:
<?php
define("STARTSWITH", '[{"userProfileUrl":"');
$file = $_GET['file'];
/* Without Sanitize
$file = filter_var($file, FILTER_SANITIZE_STRING);*/
$part = STARTSWITH;
echo var_dump(verifyFileStart($file, $part));
echo nl2br("\n\n");
echo var_dump($file);
echo nl2br("\n\n");
echo var_dump($part);
// Here is the function (verifyFileStart) that does the checking
?>
var_dump () Вывод:
bool(true)
string(72) "[{"userProfileUrl":"/users/jDoe","avatar":"1","name":"John Doe","id":1}]"
string(20) "[{"userProfileUrl":""
Почему первый вывод с sanitize 128 и вывод без sanitize 72?
My function verifyFileStart($string, $startString)
только кажется, что подстрока находится в строке, если не продезинфицировать. Как мне справиться с этим и заставить его работать с обработанными данными?
Заранее спасибо!