我正在尝试从字符串中删除所有以/
字符开头的内容,所以如果我有
my_value/j/im<b*+èo[/h>e\ylo
我想删除字符串/j/im<b*+èo[/h>e\ylo
并仅返回my_value
。
我想用str_replace
的东西,但我不是一个伟大的正则表达式程序员,我正在用PHP练习。
function clean_value ($value) {
return preg_replace ("^(/.*?)$", "", $value);
}
我该怎么办?
答案 0 :(得分:5)
这里没有理由使用正则表达式。请改用strpos()
和substr()
组合:
$original = 'my_value/j/im<b*+èo[/h>e\ylo';
$removed = substr($original, 0, strpos($original, '/'));
如果您可以保证字符串中始终至少包含1个/
字符,则上述操作将起作用。如果您不能保证或不知道,只需修改为:
$removed = (strpos($original, '/') === false)
? $original
: substr($original, 0, strpos($original, '/'));
答案 1 :(得分:3)
最简单的事情可以在没有正则表达式的情况下完成
$string = "my_value/j/im<b*+èo[/h>e\ylo";
$splitted = explode("/",$string,2);
echo "$splitted[0]\n";
答案 2 :(得分:2)
答案 3 :(得分:2)
您需要从正则表达式中删除起始插入符号,并且可以使用贪婪匹配来获取字符串的其余部分:
function clean_value ($value) {
return preg_replace ("/\/.*/", "", $value);
}