我正在考虑这样做的方法。我想在一个句子中得到一些文字。
这是数据库中$ item_title的示例:
cat1 + cat1 + sub1 of cat1 + test1 of sub1 of cat1
我想做的就是从第一个'+'
开始判断句子在这种情况下,我希望:
cat1的sub1 + cat1的sub1的测试1
$pieces = explode(" + ", $item_title);
$idonotneed = $pieces[0]; // cat1
答案 0 :(得分:3)
$pieces = explode(" + ", $item_title, 2);
您可以传递第三个参数,该参数代表您希望接收的最大细分数量。
$pieces[0]
将成为第一部分; pieces[1]
其余的。
答案 1 :(得分:1)
$pieces = explode(' + ', $item_title);
array_shift($pieces);
$wanted = implode(' + ', $pieces);
答案 2 :(得分:1)
preg_replace('/^.*?\+ /', '', $item_title);
它基本上从字符串的开头删除任何东西,直到遇到+和空格...如果没有+后跟一个空格,它将返回整个句子
分解正则表达式:
.*?
匹配任何角色(非贪婪,将在一秒内解释)。\+ /
一个加号,后跟一个空格(此处添加/
结束分隔符,否则空格不会显示。如果没有?
使第一部分不贪婪,它将与最后一个+
匹配。
如果正则表达式与任何内容都不匹配,则不会替换任何内容,并且将返回整个字符串。
答案 3 :(得分:1)
您也可以使用 strpos 和 substr 执行此操作。
$text = "cat1 + sub1 of cat1 + test 1 of sub1 of cat1";
$pos = strpos($text, '+');
echo substr($text, $pos+1);
答案 4 :(得分:0)
无需explode()
或正则表达式。
$wanted = substr($item_title, strpos($item_title, '+') + 1);
或者:
$wanted = substr(strstr($item_title, '+'), 1);