2015-10-29 4 views
1

Я новичок в php и был смущен функцией preg_match_all().php preg_match_all описание

Может ли кто-нибудь объяснить, что делает каждая часть функции в этом примере?

preg_match_all("/<item><title>([^<]*) - ([^<]*?)<\/title>/i", $buffer, $titlematches); 
+0

http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean –

ответ

0

Это регулярное выражение, и они хитрые сволочи, пока вы не привыкнете к ним. Они предназначены не только для PHP, но и для каждого языка.

Это поиск $buffer, ища элемент <title> внутри элемента <item>. Он просматривает элемент <title> для двух блоков текста, разделенных - (второй блок является необязательным.) Найденные блоки текста сохраняются в $titlematches для использования в скрипте.

Как уже упоминалось в другом ответе, http://regex101.com/ - хороший ресурс для проверки вашего синтаксиса, но, возможно, не для новичков!

+1

Были скрытые теги html, пожалуйста, проверьте вопрос еще раз. Я добавил форматирование кода. –

0
/([^<]) - ([^<]?)<\/title>/i 
1st Capturing group ([^<]) 
[^<] match a single character not present in the list below 
< a single character in the list < literally (case insensitive) 
- matches the characters - literally 
2nd Capturing group ([^<]?) 
[^<]? match a single character not present in the list below 
Quantifier: ? Between zero and one time, as many times as possible, giving back as needed [greedy] 
< a single character in the list < literally (case insensitive) 
< matches the characters < literally 
\/ matches the character/literally 
title> matches the characters title> literally (case insensitive) 
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z]) 

https://regex101.com/

+0

Были скрытые теги html, проверьте этот вопрос еще раз. Я добавил форматирование кода. –