如何使用PHP删除一个句子

时间:2012-03-18 19:37:17

标签: php

我正在尝试使用strpos查找字符串是否存在,然后使用substr_replace删除该字符串。我的代码如下:

  $title=$item->get_title();
        $stringToFind='Help needed identifying this person in ';
        if(strpos($title,$stringToFind)){
            $title=substr_replace($title,'',0,strlen($stringToFind));
        }

然而,当我对strpos进行回声时,它总是返回false,应该是真的。所以我想知道strpos是否不做空白或其他什么?在哪种情况下,有人可以推荐一些东西吗?

4 个答案:

答案 0 :(得分:7)

你为什么不试一试:

$searchStr = 'Help needed identifying this person in ';
$title = str_replace($searchStr,'',$title);

PHP文档将str_replace函数称为

  

用替换字符串替换所有出现的搜索字符串。

如果$searchStr变量中未显示$title,则该字符串将保持不变。
但是,如果它存在 - 它将被删除。您根本不需要测试它是否存在。如果您需要测试是否进行了更改,则可以使用strlenmb_strlen来比较两个字符串的长度,具体取决于您的编码。

输入/输出示例:

常数 - $searchStr = 'Help needed identifying this person in ';

// A match is found - string is changed
IN -> Help needed identifying this person in Timbuktu
OUT -> Timbuktu

IN -> Help needed identifying this person in Zimbabwe
OUT -> Zimbabwe

IN -> Help needed identifying this person in Netanya
OUT -> Netanya

// A match is not found - string remains the same
IN -> Stack Overflow is a programming Q & A site that’s free.
OUT -> Stack Overflow is a programming Q & A site that’s free.

IN -> We don’t run Stack Overflow. You do.
OUT -> We don’t run Stack Overflow. You do.

答案 1 :(得分:1)

搜索到的字符串是否位于0位置?您可能需要使用===比较,因为以下内容在php中是正确的:

0 == false // true (automatically casted)
0 === false //false (type-sensitive comparison)

所以试试

$title=$item->get_title();

if(strpos($title,'Help needed identifying this person in ') ===false){
        $title=substr_replace($title,'',0,strlen($title));
}

答案 2 :(得分:0)

strpos()返回数值或错误时返回false。在这种情况下,它返回0,因为这是它找到字符串的位置。你需要使用

if(strpos($title, $string) !== false) { ...

答案 3 :(得分:0)

如果句子位于字符串的开头,则strpos将返回0.当转换为布尔值时,0等于false。

因此,要停止此问题,您需要进行严格的比较。即:

$title=$item->get_title();
if(strpos($title,$needle) !==false)
{
    $title=substr_replace($title,'Help needed identifying this person in ',0,strlen($title));
}

另一个可能的问题是strpos区分大小写。并且1个大写或小写字母将丢弃所有内容。因此,为了防止这种情况,您应该使用stripos