PHP - 如何检查字符串是否包含任何文本

时间:2013-03-08 23:47:26

标签: php

<?php
$a = '';

if($a exist 'some text')
    echo 'text';
?>

假设我有上面的代码,如何编写语句“if($ a exists'some text')”?

8 个答案:

答案 0 :(得分:134)

使用strpos功能:http://php.net/manual/en/function.strpos.php

$haystack = "foo bar baz";
$needle   = "bar";

if( strpos( $haystack, $needle ) !== false) {
    echo "\"bar\" exists in the haystack variable";
}

在你的情况下:

if( strpos( $a, 'some text' ) !== false ) echo 'text';

请注意,我使用!==运算符(而非!= false== true甚至只是if( strpos( ... ) ) {)是因为PHP的"truthy"/"falsy"性质处理strpos的返回值。

答案 1 :(得分:13)

空字符串是假的,所以你可以写:

if ($a) {
    echo 'text';
}

虽然如果您询问该字符串中是否存在特定子字符串,您可以使用strpos()来执行此操作:

if (strpos($a, 'some text') !== false) {
    echo 'text';
}

答案 2 :(得分:4)

http://php.net/manual/en/function.strpos.php如果字符串中存在“some text”,我认为你是笨蛋吗?

if(strpos( $a , 'some text' ) !== false)

答案 3 :(得分:2)

您可以使用strpos()stripos()来检查字符串是否包含给定的针头。它将返回找到它的位置,否则将返回FALSE。

使用运算符===或`!==在PHP中将FALSE与0区别开来。

答案 4 :(得分:1)

您可以使用== comparison operator检查变量是否与文字相同:

if( $a == 'some text') {
    ...

您还可以使用strpos函数返回第一次出现的字符串:

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}

See documentation

答案 5 :(得分:1)

您可以使用此代码

$a = '';

if(!empty($a))
  echo 'text';

答案 6 :(得分:1)

如果您需要知道字符串中是否存在单词,则可以使用此单词。由于您的问题不清楚您是否只想知道变量是否为字符串。 “word”是您在字符串中搜索的单词。

if (strpos($a,'word') !== false) {
echo 'true';
}

或使用is_string方法。哪个在给定变量上返回true或false。

<?php
$a = '';
is_string($a);
?>

答案 7 :(得分:0)

是否要检查$ a是否为非空字符串? 所以它只包含任何文字? 然后以下内容将起作用。

如果$ a包含字符串,则可以使用以下内容:

if (!empty($a)) {      // Means: if not empty
    ...
}

如果您还需要确认$ a实际上是一个字符串,请使用:

if (is_string($a) && !empty($a)) {      // Means: if $a is a string and not empty
    ...
}