2016-02-29 5 views
-3

У меня есть следующая строка, и я хочу извлечь из нее местоположение.Регулярное выражение ... извлечение определенного слова из строки

{"image_intro":"images\/slider\/lazic.jpg","float_intro":"","image_intro_alt":"Tuttlingen","image_intro_caption":"","image_fulltext":"images\/slider\/lazic.jpg","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""} 

Так что мне нужно слово Тутлинген ... и больше ничего.

Может ли кто-нибудь сказать мне правильное регулярное выражение для PHP?

+3

Вы можете использовать в PHP 'json_decode' ссылаться http://php.net/manual/es/function.json-decode.php –

+0

'$ s =" Tuttlingen ";'. Пожалуйста. – ksimka

ответ

5

Это хорошо отформатированная строка JSON. Использование json_decode() будет проще.

$string = '{"image_intro":"images\/slider\/lazic.jpg","float_intro":"","image_intro_alt":"Tuttlingen","image_intro_caption":"","image_fulltext":"images\/slider\/lazic.jpg","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}'; 
$json = json_decode($string, true); 
echo $json['image_intro_alt']; 
+0

Да, спасибо, что напомнили мне об этом. Я всегда забываю об этом. – ROAL

+0

Хотя это технически корректно (лучший правильный вариант), вопрос явно запрашивает RegEx. – apokryfos

+0

@apokryfos Пока вы правы в том, что OP хочет регулярное выражение, важно помнить, что регулярное выражение включает в себя больше накладных расходов, чем парсер. И в этом случае это намного проще и чище. Не просто отвечайте на вопросы, подумайте о том, как лучше научить людей кодировать. – Machavity

1
$str = '{ 
     "image_intro": "images\/slider\/lazic.jpg", 
     "float_intro": "", 
     "image_intro_alt": "Tuttlingen", 
     "image_intro_caption": "", 
     "image_fulltext": "images\/slider\/lazic.jpg", 
     "float_fulltext": "", 
     "image_fulltext_alt": "", 
     "image_fulltext_caption": "" 
    }'; 
    $res = null; 
    $regex = "/.*\"image\_intro\_alt\"\:\s*\"(.*?)\".*/"; 
    preg_match($regex,$str,$res); 
    if (is_array($res) && isset($res[1])) { 
     echo $res[1]; //Echo or do whatever with it. 
    } 

Обновлено: Сделано согласование ленивым, как предложил

Смежные вопросы