【问题标题】:Find/Replace specific string PHP until a space查找/替换特定字符串 PHP 直到一个空格
【发布时间】:2018-05-05 01:09:10
【问题描述】:

我试图弄清楚如何在 PHP 中找到一个字符串,然后在找到该字符串之后删除所有并列的字母,直到最终出现空格。

基本上在我的应用程序中,我有一个大文本与所有内容混合在一起。对于我的输出,我想删除以字符“@”开头的所有单词。

例如字符串:

这是一个占位符#string,它看起来很棒,对吧?

如何搜索此字符串并仅删除“@great”部分?我不知道@xxx 是什么,所以我首先需要搜索字符串,然后将其替换为空。

我知道我可以这样做:

<?php
$string = "This is a placeholder #string and it looks @great right?";
$newstring = str_replace("@great", "", $string);
print $newstring;
?>

但我不知道@xxx 将包含什么或它将持续多长时间。我所知道的是会有一个最终的休息/空格,这就是我想要删除的所有内容。

因此,如果文本包含“@”,则将其与所有并列字母一起查找,直到空格,然后删除“@xxx”直到空格。保留其他所有内容。

有什么想法吗?

【问题讨论】:

  • 谷歌:正则表达式单词边界
  • 你确定后面总是有空格吗?如果它是字符串中的最后一个单词怎么办? @xxx 结尾是否可以有标点符号,如果有,是否也应该删除?
  • 如果上面有电子邮件怎么办? xD

标签: php string loops replace str-replace


【解决方案1】:

我发现了这个:https://stackoverflow.com/a/5877136/8695939
同样的问题,但 $

\$(\w+)

解释:

\$ : 转义特殊的 $ 字符
() :在此处捕获匹配项(至少在大多数引擎中)
\w : 匹配 a - z, A - Z 和 0 - 9 (and_)
+ : 匹配任意次数

有帮助吗?

编辑:使用 PHP preg-replace.

【讨论】:

  • 谢谢,看来如果我这样做 \@(\w+) 它可以达到它的目的,但我如何在我的上下文中使用正则表达式?在查找和替换的上下文中?
  • 我能知道为什么我被否决了吗?我来这里是为了帮助伙计们。我会编辑我的答案@Uz001
【解决方案2】:

您可以使用 preg_replace。

这将找到@ 符号并删除它后面的所有字母或数字加上一个空格。

$string = "This is a placeholder #string and it looks @great right?";
$newstring = preg_replace("/@\w+\s/", "", $string);
print $newstring;

https://3v4l.org/OUe87

【讨论】:

    【解决方案3】:

    方法一 strpos() 的组合来定位原始字符串中的位置,然后 substr() 来返回你想要的字符串。 方法二 您还可以使用 explode() 并使用 @great 作为分隔符,然后分析返回的数组以获得您想要的内容

    【讨论】:

    • 您需要提供更多详细信息。它确实在一定程度上回答了这个问题,但你可以举个例子
    猜你喜欢
    • 2011-12-27
    • 2015-10-01
    • 2013-02-06
    • 2014-09-05
    • 2013-02-18
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多