找到并替换所有以'ing'结尾的单词

时间:2015-11-08 01:49:48

标签: php regex strpos

我正在尝试查找并替换所有以'ing'结尾的单词。我该怎么做?

$text = "dreaming";
if (strlen($text) >= 6) {

if (0 === strpos($text, "ing")) 
//replace the last 3 characters of $text <---not sure how to do this either
echo $text; 
echo "true";    
}

结果:

null

想要结果:

dream
true

5 个答案:

答案 0 :(得分:3)

这应该适用于在单词结尾处替换,而忽略以Ing开头的内容以及在其中间的单词。

$output = preg_replace('/(\w)ing([\W]+|$)/i', '$1$2', $input); 

已更新,以反映评论中指定的更改。

答案 1 :(得分:3)

您也可以使用substr

$text = "dreaming";

if (substr($text, (strlen($text) - 3), 3) === 'ing') {
  $text = substr($text, 0, (strlen($text) - 3));
}
echo $text;

答案 2 :(得分:2)

你可以使用两个正则表达式取决于你想要完成的问题有点含糊不清。

echo preg_replace('/([a-zA-Z]+)ing((:?[\s.,;!?]|$))/', '$1$2', $text);

echo preg_replace('/.{3}$/', '', $text);

第一个正则表达式在ing之前查找单词字符,然后查找标点符号,空格或字符串的结尾。第二个只取下字符串的最后三个字符。

答案 3 :(得分:0)

您可以使用regexword boundaries

$str = preg_replace('/\Bing\b/', "", $str);

\B(非单词边界)匹配单词字符粘在一起的位置。

请注意,它会将king替换为k。见demo at regex101

答案 4 :(得分:-2)

$text = "dreaming";
if (strlen($text) >= 6 && strpos($text,'ing')) {
    echo str_replace('ing', '', $text); 
    echo "true";    
}

您应该查看手册。有许多不同的字符串函数和不同的方法可以实现此目的: http://php.net/manual/en/ref.strings.php

既然你坚持:

$text = "dreaming";
if (strlen($text) >= 6 && substr($text,strlen($text)-3)=='ing') {
    echo str_replace('ing', '', $text); 
    echo "true";    
}