我正在尝试查找并替换所有以'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
答案 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)
您可以使用regex和word 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";
}