Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除某个字符后的字符串?_Php_Regex_String - Fatal编程技术网

Php 删除某个字符后的字符串?

Php 删除某个字符后的字符串?,php,regex,string,Php,Regex,String,如何删除PHP中某些字符(如?、#、&、%、=)后字符串的剩余部分?有什么想法吗?我尝试了preg\u replace(),但我想不出来。更新后,才意识到我读错了。你要找的是以前的东西,不是以后的。更新代码: $test_string = 'remember?forget'; preg_match('/([^?#&%=]+)/', $test_string, $matches); $part_before_char = $matches[1]; 运行后,$part\u before\u

如何删除PHP中某些字符(如
?、#、&、%、=
)后字符串的剩余部分?有什么想法吗?我尝试了
preg\u replace()
,但我想不出来。

更新后,才意识到我读错了。你要找的是以前的东西,不是以后的。更新代码:

$test_string = 'remember?forget';
preg_match('/([^?#&%=]+)/', $test_string, $matches);
$part_before_char = $matches[1];
运行后,$part\u before\u char='记住'

这应该可以:

$str = 'mystring#deletedpartofstring';

$str = preg_replace('/[?#&%=].+/', '', $str);
$str = "Hello World#somesuffixstr";
preg_match("/^(.*?[?#&%=]).*/", $str, $str);
echo $str[1];
// Should output "Hello World#"
关于正则表达式模式:

它搜索字符串的开头(^),然后搜索任意字符0次或更多次(即组#1),然后搜索像&或%这样的符号,然后搜索任意字符0次或更多次。它用组#1中匹配的字符替换字符串。

Removed downvote。但是角色类不需要竖条。字符类中的内容默认为或。哦,是的,我忘记了这一点,所以我现在删除了垂直条。问题要求在剩余字符串中也包含特定符号(如%或&)。他可以更改它,使其使用非捕获组。像这样,
$str=preg_replace('/(?:[?#&%=])。+/','$str)