2015-06-26 5 views
0

Я очень новичок в php и нуждаюсь в чьей-то помощи. Из кода ниже, я хочу линию «Я хороший мальчик», но он печатает «Я хороший мальчик :: None :: Она хорошая девочка»простая помощь preg_match

$data = "None::I am a good boy::None::She is a good girl::None::"; 

$pattern = "/None::(.*)::None::/"; 
preg_match($pattern, $data, $results); 
echo $results[1]; 

и в другой, Я хочу "2015-06-02 10:13:54", но я получаю "015-06-02 10:13:54"

$data2 = "::2015-06-02 10:13:54::None::"; 

$pattern2 = "/::\d(.*)::None::/"; 
preg_match($pattern2, $data2, $results); 
echo $results[1]; 

ответ

2

Перемена бита в preg_match: -

<?php 
     $data = "None::I am a good boy::None::She is a good girl::None::"; 

     $pattern = "/None::(.*?)::None::/"; // ? is added to capture anything present between None:: and ::None:: 
     preg_match($pattern, $data, $results); 
     echo $results[1]; 


     $data2 = "::2015-06-02 10:13:54::None::"; 

     $pattern2 = "/::(.*?)::None::/"; // removed \d to remove digit restriction and added ? to capture anything present between :: and ::None:: 
     preg_match($pattern2, $data2, $results); 
     echo $results[1]; 
    ?> 

Выход: - https://eval.in/388254

+0

Что вы изменили и почему .. – Rizier123

+0

Вы до сих пор не объяснить, что '? 'На самом деле делает здесь – Rizier123

1

Попробуйте эти узоры.

$pattern = "/None::(.*?)::None::/"; 


$pattern2 = "/::(.*?)::None::/"; 
+0

* Попробуйте * почему О.П. должны попробовать. Они работают или нет? – Rizier123

+0

Да, они действительно работают. Попробуйте попробовать этот кусочек пи. – PovertyBob