如何获取字符串中 () 之前的每个单词

How to get every words before () in a string

如何获取 ()

中单词之前的每个单词
$str = "There are some (Cat) which are wild";
$str = "Animal (Cat) is a domestic pet";
echo implode(" ", array_slice(explode(" ", $str), 0, 2));

我希望输出为 'There are some (Cat)' 和 'Animal (Cat)'。

假设这是你上一个问题的延续,这就是我要做的。

我将按照以下步骤解决此问题:

  1. 通过在 space 字符上使用 explode() 将字符串转换为数组。
  2. 为数组创建映射器函数以仅获取第一个字符。
  3. 在数组元素中搜索(并找到索引。
  4. 将数组从 0 切片到以 ( 开头的元素的下一个元素。
  5. 使用 space 字符将数组的所有元素与 implode() 连接起来。

所以以上几点将为您提供此代码:

<?php
  $str = "Animal (Cat) is a domestic pet";
  $arr = explode(" ", $str);
  echo implode(" ", array_slice($arr, 0, array_search('(', array_map("arrMapFirst", $arr)) + 1));

我已经缓存了 $arr 的值,因为我正在使用它两次。

下面是完整的代码和几个相同的示例:

<?php
  function arrMapFirst($a) {
    return $a[0];
  }

  $str = "Animal (Cat) is a domestic pet";
  $arr = explode(" ", $str);
  echo implode(" ", array_slice($arr, 0, array_search('(', array_map("arrMapFirst", $arr)) + 1));

  echo PHP_EOL;

  $str = "A Cute Animal (Cat) is a domestic pet";
  $arr = explode(" ", $str);
  echo implode(" ", array_slice($arr, 0, array_search('(', array_map("arrMapFirst", $arr)) + 1));

  echo PHP_EOL;

  $str = "An Angry Animal (Wolf) is not a domestic pet";
  $arr = explode(" ", $str);
  echo implode(" ", array_slice($arr, 0, array_search('(', array_map("arrMapFirst", $arr)) + 1));

在上面的例子中,我使用了这三个字符串:

  • 动物(猫)是家养宠物
  • 可爱的动物(猫)是家养宠物
  • 愤怒的动物(狼)不是家养宠物

我得到以下预期输出:

  • 动物(猫)
  • 一只可爱的动物(猫)
  • 愤怒的动物(狼)

这是一个相同的沙盒:Get all words before and including the first element starting with (

希望对您有所帮助。