Как получить конец строки с preg_match? - PullRequest
1 голос
/ 12 декабря 2011

Я получил эту строку:

from:100000238267321=to:100000238267322=somethingelse: hey james, heard the news, mike is returning tomorrow!

И эту команду preg_match:

#(?P<from>(?:\w|\s)+):(?P<idfrom>\d+)=(?P<to>(?:\w|\s)+):(?P<toid>\d+)=(?P<somethingelse>(?:\w|\s)+):(?P<somethingelsetxt>(?:\w|\s)+)#

И мне нужно было получить весь текст после части 'Someelse:'.С preg_match выше он получает только до запятой после 'эй Джеймс'.Возвращение:

[0] from:100000238267321=to:100000238267322=somethingelse:hey james
[from]  from
[1] from
[idfrom]    100000238267321
[2] 100000238267321
[to]    to
[3] to
[toid]  100000238267322
[4] 100000238267322
[somethingelse] somethingelse
[5] somethingelse
[somethingelsetxt]  hey james
[6] hey james

Что я могу сделать?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Используйте .*$, чтобы получить все от текущей точки до конца строки.Убедитесь, что модификатор multiline установлен так, что . соответствует символам новой строки, если только вы точно не знаете, что строк не будет.

1 голос
/ 12 декабря 2011

Вы можете использовать взорвать , чтобы получить последнее значение массива:

$string = 'from:100000238267321=to:100000238267322=somethingelse: hey james, heard the news, mike is returning tomorrow!';
$value = explode(':',$string);
echo $value[3];

См. кодовая панель .

UPDATE

Чтобы исправить проблему с регулярным выражением, добавьте «|» к своему регулярному выражению что-то вроде набора:

(?P<somethingelsetxt>(?:\w|\s|,)

Это тоже запятая. Вы можете включить "|!" а если хочешь.

...