我想摆脱PHP变量的第二部分,它具有固定的格式,但数字总是不同的。所以我不能使用简单的str_replace。我正在寻找一个正则表达式解决方案来解决这个问题。
$ string ="此部分的第一个例子10 t / m 16必须将其删除&#34 ;;
$ string ="第12个t / m 22的第二个例子,它必须被删除&#34 ;;
必须成为:
$ string ="第一个例子&#34 ;;
$ string ="第二个例子&#34 ;;
答案 0 :(得分:0)
也许您可以使用explode和implode并使用空格作为分隔符来获取前2个单词:
$strings = [
"First example from this part 10 t/m 16 it has to be removed",
"Second example from this part 12 t/m 22 it has to be removed"
];
foreach ($strings as $string) {
$parts = explode(" ", $string);
echo implode(" ", [$parts[0], $parts[1]]);
}
如果您想使用正则表达式,可以使用:
答案 1 :(得分:0)
您可以使用explode,implode和array_slice 这比正则表达式更快,内存更少 爆炸创建一个在空格上分隔的字符串数组 Array_slice(在本例中)获取数组的两个第一项 Implode从数组创建一个字符串(array_slice两个项目)并在其间添加一个空格。
$string = "First example from this part 10 t/m 16 it has to be removed";
echo implode(" ", array_slice(explode(" ", $string), 0,2)); // First example
echo "\n";
$string = "Second example from this part 12 t/m 22 it has to be removed";
echo implode(" ", array_slice(explode(" ", $string), 0,2)); // Second example
如果你坚持使用正则表达式,那就可以了。
$re = '/(.*?\s.*?\s)/';
$str = 'First example from this part 10 t/m 16 it has to be removed';
preg_match($re, $str, $match);
echo $match[1]; // First example
该模式会再次查找任何字符,空格,任何字符和空格。