我在想如何在PHP中删除特定子字符串后的所有内容。
例如:
例如:
Posted On April 6th By Some Dude
我希望它能够删除包括子字符串"By"在内的所有文本
谢谢
$variable = substr($variable, 0, strpos($variable, "By"));
简单来说:给我一个字符串的部分,从开始到第一次遇到分隔符的位置结束。
如果你正在使用PHP 5.3+,可以查看strstr()函数的$before_needle标志。
$s = 'Posted On April 6th By Some Dude';
echo strstr($s, 'By', true);
echo strstr($s,'By',true) ?: $s;
。 - kenorbecho strstr($s, 'By', true) === false ? $s : strstr($s, 'By', true)
? - Steve Chambersstrstr()
不应用于检查一个字符串是否存在于另一个字符串中,出于性能原因,建议使用strpos()
。尽管如此,我仍会寻求单个函数调用。选择正确的技术取决于针在干草堆中未被发现时所需的输出。我已在问题下面发布了一些链接。 - mickmackusastrstr
确实很好。虽然这里有很多答案,但我对它们没有100%的满意度,因此我根据上面的建议添加了自己的答案:https://dev59.com/G3E85IYBdhLWcg3w1HOF(请随意查看)。 - Steve Chambers?:
的用法。非常有启发。谢谢。 - undefined使用explode
如何:
$input = 'Posted On April 6th By Some Dude';
$result = explode(' By',$input);
return $result[0];
优点:
$result[1]
将返回Some Dude
)By
子字符串进行拆分,因此 explode()
调用应该包含一个 2
的限制参数。使用 explode()
的缺点是,在隔离所需字符串的过程中,需要生成一个临时数组。 - mickmackusa你可以这样做:
$posted = preg_replace('/ By.*/', '', $posted);
echo $posted;
这是一个正则表达式替换函数,它查找字面字符串“By
”及其后的任意数量字符(.*
),并将它们替换为空字符串(''
),结果存储在同一变量($posted
)中进行搜索。
如果输入字符串中没有[空格]By
,则字符串保持不变。
一种方法是:
$str = 'Posted On April 6th By Some Dude';
echo strtok($str, 'By'); // Posted On April 6th
By
拆分,而是按第二个参数中的任何字符拆分。也就是说,它将按B
或y
拆分。从技术上讲,它并没有获取By
之前的所有内容。 - msbstrtok('a:b', ':')
将返回a
,但strtok(':b', ':')
将返回b
,而不是你期望的空字符串。 - Quinn Comendant试试这个。
function strip_after_string($str,$char)
{
$pos=strpos($str,$char);
if ($pos!==false)
{
//$char was found, so return everything up to it.
return substr($str,0,$pos);
}
else
{
//this will return the original string if $char is not found. if you wish to return a blank string when not found, just change $str to ''
return $str;
}
}
用法:
<?php
//returns Apples
$clean_string= strip_after_string ("Apples, Oranges, Banannas",",");
?>
$variable = preg_replace('/By.*/', '', $variable);
preg_replace
提供了一种方法:
$newText = preg_replace('/\bBy\b.*$/', '', $text);
$var = "Posted On April 6th By Some Dude";
$new_var = substr($var, 0, strpos($var, " By"));
=== false
检查。当找不到针时,整个字符串被截断。我希望看到整个输入字符串,但我得到了一个零长度的字符串。https://3v4l.org/f7ue2 - mickmackusa