Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从字符串中删除单词后的所有文本?_Php_Replace - Fatal编程技术网

Php 如何从字符串中删除单词后的所有文本?

Php 如何从字符串中删除单词后的所有文本?,php,replace,Php,Replace,如何从段落中删除一个单词及其后的内容 e、 g: 如何从字符串中删除此(测试)单词后的所有文本 ABC DEF GHEE JUL *test MON ...* 我想从字符串中删除测试MON… 刚刚: ABC DEF GHEE JUL 谢谢您可以轻松拆分 $string = "ABC DEF GHEE JUL test MON"; $splitted = explode("test", $string); $result = $splitted[0]; //ABC DEF GHEE JUL

如何从段落中删除一个单词及其后的内容

e、 g:

如何从字符串中删除此(测试)单词后的所有文本

ABC DEF GHEE JUL *test MON ...* 
我想从字符串中删除测试MON…

刚刚:

ABC DEF GHEE JUL
谢谢

您可以轻松拆分

$string = "ABC DEF GHEE JUL test MON";
$splitted = explode("test", $string);
$result = $splitted[0]; //ABC DEF GHEE JUL

最简单的方法是简单地使用子字符串:

$result = substr($string, 0, strpos($string, 'test'));

您可以尝试以下方法:

<?php
    $string = "ABC DEF GHEE JUL test MON ...";
    $clean1 = preg_replace("#(\s[a-z]+?).+$#", "", $string);

    var_dump($clean1);  //<== YIELDS: string 'ABC DEF GHEE JUL' (length=16)

您可以创建函数并在以后重用它们,如:

$test1=removeAfterFirst("ABC DEF GHEE JUL test MON ...","test ");
// $test1 is "ABC DEF GHEE JUL "

$test2=removeAfterLast("ABC DEF ABC GHE","ABC");
// $test2 is "ABC DEF "
职能:

public static function removeAfterFirst($text,$value)
{
    $firstOccurence=strpos($text,$value);
    if($firstOccurence===false)
        return $text;
    return substr($text,0,$firstOccurence);
}

public static function removeAfterLast($text,$value)
{
    $lastOccurence=strrpos($text,$value);
    if($lastOccurence===false)
        return $text;
    return substr($text,0,$lastOccurence);
}

有许多字符串函数可供您使用()-strpos、substr、strcspn、strstrstr等。您有什么好的理由来解释为什么要将这样一个琐碎的任务推送到一些未定义类的静态方法中?您可以编写一个基本函数,也可以简单地显示基本算法,或者如果您坚持使用OOP,请提供完整的类定义。。。。怀疑地;OP可能真的不需要OOP路由来完成字符串替换操作…有什么好的理由吗?对于那些在你之后想要知道你在做什么的开发人员来说呢。当看到对名为
RemoveAfter…
的函数的调用是可以立即理解的,而查看(丑陋的)
substr
strpos
调用是不能立即理解的。没有开发人员会因为没有在类中进行字符串替换而关注此操作。。。很明显,即使是最糟糕、最唠叨的开发人员也会希望您为这么简单的东西走那么远,这是值得怀疑的。。。但也许。。。。(谁知道呢)…;-)请注意,一个好的开发人员只关心代码的质量、交付和性能,而不关心编写代码的独特技术……相信我,这才是正确的方向。我不知道你的经历,但是如果你将在一家拥有大量领域知识和代码的大公司/机构工作,所有琐碎的任务最好放在静态实用程序类和函数中。请相信我。:)你现在能想象一个不能做字符串替换的人,一个有着5。。。(我是说OP)在你描述的这样一个机构工作?作为旁白;即使你为上帝软件公司工作,作为一名程序员,你也应该确切地知道该做什么,在哪里做,什么时候做:这就是所谓的主动性。将常用的方法和函数放在静态类中是很好的,但当您必须简单地替换7字字符串中的几个字符时就不行了……如果“test”不在
$String
中,这将返回一个空字符串。这并不重要。他想缩短字符串,比如
ABC DEF GHEE JUL*test MON…*
,而不是
ABC DEF GHEE JUL*MON…*
。这只是一个例子。意外行为很重要,比如返回空字符串而不是完整字符串。意外行为?哦,得了吧,如果你真的需要的话,一个简单的if语句就行了……错了。这仅适用于此特定示例。OP并没有说他总是希望在收到第一封小信后把所有东西都删除,这只是一个例子。他同意小盘股,但不赞成否决投票。你在这个话题上发疯了吗?:)