如何在second comma
之后删除句子中的文本,但如果句子中没有two commas
则不执行任何操作?
我尝试了以下内容:
substr($str, 0, strpos($str, ',', strpos($str, ',')+1))
但问题是,如果我在这个$str
中没有两个逗号,则功能不会输出,我会得到一个空白区域。
无论如何检查是否存在两个逗号并在第二个逗号后删除文本,否则不执行任何操作。
答案 0 :(得分:2)
试试这个:
$commasCount = count(explode(',', $str));
if ($commasCount > 2) {
$str = substr($str, 0, strpos($str, ',', strpos($str, ',')+1));
}
答案 1 :(得分:0)
首先检查出现次数:
if (substr_count($str, ',') >= 2)
substr($str, 0, strpos($str, ',', strpos($str, ',')+1));
或者你可以用preg_match()
来做,但速度会慢一些:
if (preg_match('/([^,]*,){2}/', $str, $match))
$str = $match[1];
或者只需一步(上面的ala adeneo,但根据说明进行了修改)
$str = preg_replace('/((?:[^,]*,){2})?(?:.*)$/', '$1', $str);
您会注意到(...)?
末尾的问号标记末尾带有逗号的初始字符是可选的,因此无论如何都会得到正确的值。
答案 2 :(得分:0)
一种更优雅的方法,不使用字符串函数并重用数组,因为我们需要它来计算逗号的数量(并且为了可读性而避免使用正则表达式疯狂):
$text_segments = explode(',', $str);
if( count($text_segments) > 2 ) {
$str = $text_segments[0] . ',' . $text_segments[1];
}