Я всегда использую этот синтаксис в самом начале скрипта php.
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On'); //On or Off
В случае если не нужно быть регулярным выражением…
$string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6';
$parts = explode(' ', $string);
$results = [];
$i = -1;
foreach($parts as $part) {
strpos($part, '/') !== false ? $results[++$i] = $part : $results[$i] .= ' ' . $part;
}
var_dump($results);
Вы можете использовать предварительное утверждение:
$string = 'DZ9243/XSHAGT FFGD JERSE XS2 DZ9232/MHAGT SUUMTE KNI M10 DZ9232/LHAGT SUMMER KNI L6';
$pieces = preg_split('@ (?=[^ ]*/)@', $string);
print_r($pieces);
Вывод:
Array
(
[0] => DZ9243/XSHAGT FFGD JERSE XS2
[1] => DZ9232/MHAGT SUUMTE KNI M10
[2] => DZ9232/LHAGT SUMMER KNI L6
)
@ (?=[^ ]*/)@
@
разделитель regex
; обычно в качестве разделителя используется /
, но это регулярное выражение пытается сопоставить /
, и поэтому лучше использовать другой разделитель; (
запускает группу; группа нужна утверждению; ?=
- положительное утверждение, ориентированное на будущее; требует, чтобы группа соответствовала входной строке, но не потребляет символы из входной строки, которая соответствует группе; [^ ]*/
- содержимое группы; он соответствует любому непробельному символу любое количество раз, за которым следует /
; это слово содержит косую черту (/
); )
оканчивает группу. В целом, regex
соответствует пробелам, за которыми следует слово, которое содержит косую черту, но слово не используется; он не включен в разделитель в preg_split()
, используется только пробел.