PHP preg_match разделить строку, разделенную знаком добавления

Я запутался насчет php регулярное выражение, которое необходимо извлечь два запроса, разделенных + предложения сознаком плюс из поискового запроса (которые могут включать цифры и / или специальные символы).

Может кто-нибудь пролить свет на это поведение?

$string = 'string1+String-2';

([a-zA-Z0-9-_]+[a-zA-Z0-9-_])

Array
(
    [0] => string1
    [1] => string1
)

3 ответа

Решение

Ты можешь сделать это так

/([\w-]+\+[\w-]+)/

неотбегший + за квадратными скобками говорят: "выражение перед одним или несколькими разами" сбежавшего \+ означает чистый +,

Альтернативный способ заключается в использовании explode()

$string = 'string1+String-2';

$parts=explode("+",$string);

print_r($parts);

с выходом:

Array
(
    [0] => string1
    [1] => String-2
)

Смотрите больше здесь:

http://php.net/manual/en/function.explode.php

Предполагая, что вы используете функцию preg_match:

Ваш образец ([a-zA-Z0-9-_]+[a-zA-Z0-9-_]) mMatching все, что является буквой или цифрой один или несколько раз, после чего следует буква или цифра.

Так что это совпадает на string с последующим 1, Вывод, который вы видите - это функция, выполняющая то, что говорит.

Если совпадения предоставлены, то он заполняется результатами поиска. $match [0] будет содержать текст, который соответствует полному шаблону, $match 1 будет содержать текст, который соответствует первому захваченному заключенному в скобки подшаблону, и так далее.

Я предполагаю, что вы, вероятно, хотели использовать preg_match_all, чтобы получить все подходящие шаблоны.

Другие вопросы по тегам