如何使用“ \”分割字符串以及分割的最佳选择是什么

时间:2019-08-05 20:53:20

标签: php

我正在尝试拆分此字符串并仅获得单词“ Test”

App\Http\Controllers\TestController

我想做的是使用“ \”“爆炸”,但我认为该字符转义了引号。如何使用该角色?

我有一个解决方案,但是使用了多余的代码行。我知道应该有更好的解决方案。

 $path = "App\Http\Controllers\TestController";
 $arrayStr = explode("\Test", $path);
 $word = explode('Controllers', $arrayStr[1]);
 $correctWord = implode($word);
 $correctWord = substr($correctWord, 1);

我是使用php的新手,所以任何建议都超过了欢迎。

edit:我忘记指定要获取Controller之前和last之后的任何单词。

谢谢!

3 个答案:

答案 0 :(得分:2)

使用正则表达式在最后一个反斜杠和单词“ Controller”之间找到一个单词

$path = "App\\Http\\Controllers\\TestController";
if( preg_match('~\\\\([^\\\\]+)Controller~', $path, $m) ) {
    echo $m[1];
}
else {
    echo 'Not found';
}

demo

答案 1 :(得分:2)

您遇到的爆炸问题是反斜杠转义了定界符字符串的右引号。因此$path_segments = explode("\", $path);是语法错误。

幸运的是,您还可以转义转义字符。 (使用单引号或双引号的方式相同。)

$segments = explode('\\', $path);

然后使用substr从最后一块获取控制器。

$controller = substr(end($segments), 0, -10);

(-10表示“控制器”的长度。)

答案 2 :(得分:1)

我建议使用正则表达式来实现这一目标;您可以使用 preg_match()

class App extends Component{
  render(){
     return[          
           <h1>Title</h1>,
           <h2> Subtitle </h2>,
           <MyCustomComponent />
     ]
  }
}

可以在 here 上看到它。