Current Location: Home> Latest Articles> Tips for Using is_long and intval Together in PHP: Detailed Examples

Tips for Using is_long and intval Together in PHP: Detailed Examples

gitbox 2025-06-07

In PHP programming, type checking and type conversion are unavoidable tasks, especially when dealing with user inputs or external data. This article will detail some practical tips for using is_long() alongside intval(), providing real code examples to help developers safely and efficiently validate integer values.

1. What is is_long()?

is_long() is a type-checking function in PHP used to determine whether a variable is of the long integer type. However, note that on most 64-bit systems, is_long() is equivalent to is_int() because PHP treats integers uniformly as int type.

$value = 123;
<p>if (is_long($value)) {<br>
echo "It is a long integer.";<br>
} else {<br>
echo "Not a long type.";<br>
}<br>

The output is:

It is a long integer.

2. The Purpose of intval()

intval() is a type conversion function used to convert a variable to an integer. It is especially useful when handling strings, floating-point numbers, or boolean values. For example:

$input = "42abc";
$intValue = intval($input);
echo $intValue;

The output is:

42

This function automatically truncates the non-numeric part, making it especially important when processing user input.

3. Why Use is_long() Together with intval()?

When you need to verify whether a user input is an integer and ensure it is truly an integer type internally, using both functions together is a very reliable approach. This is particularly important when handling form data, API request parameters, or URL query parameters.

$input = $_GET['id'] ?? '';
<p>$intId = intval($input);</p>
<p>if (is_long($intId) && $intId > 0) {<br>
// Safely use $intId<br>
$url = "<a rel="noopener" target="_new" class="" href="https://gitbox.net/item.php?id=">https://gitbox.net/item.php?id=</a>" . $intId;<br>
echo "<a href="$url">View Details</a>";<br>
} else {<br>
echo "Invalid ID.";<br>
}<br>

In the code above, we convert $_GET['id'] to an integer using intval(), then confirm its type with is_long(), also checking that it is greater than 0, thereby enhancing data security.

4. Common Mistake: Don’t Use is_long() Directly on Raw Strings

A common error is to directly use is_long() on a string, which usually returns false, even if the string is numeric in form.

Incorrect example:

$input = "123";
<p>if (is_long($input)) {<br>
echo "It is long type.";<br>
} else {<br>
echo "Not long type.";<br>
}<br>

The output is:

Not long type.

This happens because $input is a string, not an integer. The correct approach is to use intval() first:

$intValue = intval($input);
<p>if (is_long($intValue)) {<br>
echo "After conversion, it is long type.";<br>
}<br>

5. Tip: PHP 8+ filter_var() is a More Modern Alternative

Although the combination of is_long() and intval() is common in older code, in PHP 8 and later, using filter_var() to validate integers is a more modern and secure approach.

$input = $_GET['id'] ?? '';
<p>if (filter_var($input, FILTER_VALIDATE_INT)) {<br>
$url = "<a rel="noopener" target="_new" class="" href="https://gitbox.net/item.php?id=">https://gitbox.net/item.php?id=</a>" . intval($input);<br>
echo "<a href="$url">View Details</a>";<br>
} else {<br>
echo "Invalid ID.";<br>
}<br>

6. Summary

Using is_long() together with intval() can greatly improve the rigor of integer validation, but be aware of its limitations, such as the ineffectiveness of direct type checks on raw strings. For best practices, consider using filter_var() as a replacement for traditional methods. When handling URL data, embedding parameters like this is a common practice:

$id = intval($_GET['id'] ?? 0);
$url = "https://gitbox.net/item.php?id=" . $id;
echo "<a href=\"$url\">Go</a>";

Proper type conversion and validation not only improve code quality but also effectively prevent potential security risks.