我需要帮助制作一个PHP功能。我想创建一个函数,删除字符串中特定单词或字符之前的所有内容。我知道如何做这个部分,但我不熟悉它的功能,我需要为它添加一个选项...例如。如果我有这个字符串......
$str="I like to eat cheese, crackers and ham";
我希望在干酪这个词之前删除所有内容我可以使用它......
if(($pos=strpos($str,'cheese'))!== false) $str=substr($str,$pos);
我最终会以
结束奶酪,饼干和火腿
如果我想在删除中包含干酪这个词,我可以使用......
if(($pos=strpos($str,'cheese'))!== false) $str=substr($str,$pos+6);
最后的+6是“奶酪”这个词的长度。我会得到......
,饼干和火腿
我希望能够使用名为remove_before的函数来获取我的新字符串,就像这样......
$str=remove_before("cheese",$str,0);
第三个变量将指示您是否还要删除您要查找的单词。这里的零意味着,删除干酪之前的所有内容,而1意味着删除干酪字及其前的所有内容。 谢谢。
答案 0 :(得分:2)
您正在寻找的是这样的:
<?php
function remove_before($needle, $haystack, $removeNeedle=false) {
$pos = strpos($haystack, $needle);
if (($pos !== false)) {
return substr($haystack, $pos + (strlen($needle) * $removeNeedle));
}
return $haystack; // if word not found, return full string.
}
$needle = "cheese";
$haystack = "I like to eat cheese, crackers and ham";
echo remove_before($needle, $haystack, false);
?>
$pos + (strlen($needle)*$removeNeedle)
$ removeNeedle是一个布尔值,意味着它的值是1或0.如果乘以1,则value是值,如果乘以0,则值为0.所以基本上,你乘以针的长度为1或0。
最后的布尔值是可选的,因为它的默认值是false。
代码由我编写,无限制地免费使用。
答案 1 :(得分:1)
<?php
$str = "I like to eat cheese, crackers and ham";
function remove_before($needle, $haystack, $include = false)
{
$pos = strpos($haystack, $needle);
if ($pos !== false) {
if (!$include) {
$pos += strlen($needle);
}
return substr($haystack, $pos, strlen($haystack));
}
return null;
}
echo remove_before('cheese', $str, true);
echo remove_before('cheese', $str);
> cheese, crackers and ham
> , crackers and ham
查看有关创建函数http://php.net/manual/en/functions.user-defined.php
的文档但是,请查看将参数传递给函数http://php.net/manual/en/functions.arguments.php
的文档您希望在第二个链接中注意的是传递默认参数。这允许您为$ arg设置默认值,当未手动设置时,默认值为默认值。这允许PHP模拟其他语言的函数重载。
同样重要的是在函数内部进行某种错误检查,具体取决于默认设置,我的示例假设用户将传递一个布尔值。
答案 2 :(得分:0)
function remove_before ($needle, $haystack, $isNotIncluded) {
if(($pos=strpos($haystack,$needle))!== false)
$haystack=substr($haystack,$isNotIncluded?$pos + strlen ($needle) :$pos);
return $haystack;
}
//对不起,我正在Galaxy s6上打字,所以我还是没有检查它。请尝试并仔细检查substr,strlen ...我只是给你基本功能synstax。