我正在尝试拆分此字符串并仅获得单词“ 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之后的任何单词。
谢谢!
答案 0 :(得分:2)
使用正则表达式在最后一个反斜杠和单词“ Controller”之间找到一个单词
$path = "App\\Http\\Controllers\\TestController";
if( preg_match('~\\\\([^\\\\]+)Controller~', $path, $m) ) {
echo $m[1];
}
else {
echo 'Not found';
}
答案 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 上看到它。