Я хочу, чтобы соответствовать как СРК и названия атрибутов тега изображения:PHP регулярное выражение подшаблон поведение
картина:
<img [^>]*src=["|\']([^"|\']+["|\'])|title=["|\']([^"|\']+)
цель:
<img src="http://someurl.jpg" class="quiz_caption" title="Caption goes here!">
Эта модель дает мне одну нежелательное совпадение, title = «content» и совпадение, которое я действительно хочу, что является значением между кавычками после слова «title», то есть «content».
Итак, мои матчи:
<img src="http://someurl.jpg
http://someurl.jpg
title="Caption goes here!"
Caption goes here!
Есть ли способ, чтобы избежать трети этих матчей? Я использую PCRE в PHP 5.2.x
Вы используете preg_match? Можете ли вы дать полную строку, которую вы тестируете? Знаете ли вы порядок, в котором будет источник и название? И последнее, но не менее важное: знаете ли вы о группах регулярных выражений и как получить доступ к захваченным переменным? –
Это регулярное выражение не так во многих отношениях. Первое, что всплывает, '' 'посередине -' 'title' - разделяет регулярное выражение на два. '" title = 'hello' "' будет ** полным совпадением **, даже вне тега ''. Далее, '[^" | \ '] + 'должно быть' [^ "'] +' (или '[^" \ '] + ', если вы избегаете строку, а не регулярное выражение). Наконец, есть лучшие варианты для синтаксического анализа html в php, чем регулярные выражения. – Kobi
Спасибо за ответы. Мне просто нужно заставить это работать. Я не являюсь мастером регулярных выражений и в основном адаптировал регулярное выражение, написанное кем-то еще. Его для очень конкретного случая, когда я могу убедитесь, что src появится перед заголовком. Полная строка - это тег img, который я опубликовал. И да, я использую preg_match. Моя цель состоит в том, чтобы заголовок отображался как соответствие подшаблона. – codecowboy