Мне нужно извлечь идентификаторы 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[^"]*/
Я пытался использовать "|'
, ["']
и многое другое, что не работает. Был бы очень благодарен, если бы вы могли помочь мне с этим. Спасибо!
Это так быстро, как вы можете пойти. Группа захвата не требуется.
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);
Других решений пока нет …