Извлечение одинарных и двойных кавычек из ссылки с помощью регулярных выражений

Мне нужно извлечь идентификаторы Twitter для PHP-скрипта с помощью регулярных выражений. Это прекрасно работает до тех пор, пока URL-адреса закодированы в двойных кавычках …

<a href='http://www.twitter.com/singlequotes'>Twitter Single Quotes</a>
<a href="http://www.twitter.com/doublequotes">Twitter Double Quotes</a>

// regular expression
/<a [^>]*\bhref\s*=\s*"\K[^"]*twitter.com[^"]*/

Я пытался использовать "|', ["']и многое другое, что не работает. Был бы очень благодарен, если бы вы могли помочь мне с этим. Спасибо!

https://regex101.com/r/7Zu3uF/1

0

Решение

Это так быстро, как вы можете пойти. Группа захвата не требуется.

href=['"]\K[^'"]+

Образец Демо

Ищите одинарные или двойные кавычки после href= затем сопоставьте все, что не является одинарной или двойной кавычкой. Это так просто, как это может быть сделано.

постскриптум Если вас интересуют места возле = затем используйте:

href *= *['"]\K[^'"]+

Реализация PHP (PHP Demo):

$in='<a href=\'http://www.twitter.com/singlequotes\'>Twitter Single Quotes</a>
<a href="http://www.facebook.com/doublequotes">Twitter Double Quotes</a>
<a href=\'http://twitter.com/singlequotes\'>Twitter Single Quotes</a>
<a href="https://www.facebook.com/doublequotes">Twitter Double Quotes</a>';

$companies=['twitter','facebook'];

$out=preg_match_all('/href *= *[\'"]\Khttps?:\/\/(?:www\.)?(?:'.implode('|',$companies).')\.com[^\'"]+/',$in,$out)?$out[0]:[];

var_export($out);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]