2014-12-05 3 views

ответ

2

Просто добавьте s рядом p в http и сделать его в качестве факультативных, добавив quantfier ? рядом с s

'/src="https?:\/\/[^"]*\.(jpg|jpeg|png)"/i' 

http? в своем регулярном выражении делает p, как необязательный. Не делай этого.

Если вы хотите, чтобы сделать весь http:// или https:// в качестве факультативных, вы должны поместить их внутрь захвата или не-захвата группы, а затем сделать его в качестве факультативных, добавив квантор ? рядом с этой добавленной группы.

'/src="(?:https?:\/\/)?[^"]*\.(jpg|jpeg|png)"/i' 
0
'/src="(?:http|https)?:\/\/[^"]*\.(jpg|jpeg|png)"/i' 

Попробуйте this.Use это, если http or https не является обязательным.

0
$matches = array(); 
preg_match_all('#src="([^"]*)"#i', $text, $matches); 
print_r($matches[1]); 

Примечание:

  • Много людей заключите регэксп в слэшах (/), а затем цитирует все косые черты, которые появляются в регулярном выражении. В PHP косая черта не обязательна, other characters can be used as delimiters as well. Если вы хотите анализировать URL-адреса, лучше использовать что-то еще в качестве разделителя (например, ~), и регулярное выражение станет легче читать, потому что косую черту не нужно больше цитировать.
  • Вопрос: use a regular expression to get all SRC paths in HTML code. Не все URL-адреса начинаются с http:// или https://. Есть также ftp://, mailto:, data: и другие. Более того, даже если вы хотите использовать только URL-адреса http или https, в HTML они могут быть выражены как относительно текущего документа (например, src="image1.jpg") или текущего хоста (src="/images/2.jpg"). Все они извлекаются с помощью приведенного выше кода. Запустите список, проверьте первые символы каждого результата (чтобы узнать, являются ли они абсолютными или относительными), вычислите полные URL-адреса из относительных URL-адресов и сохраните только то, что вам нужно (возможно, только http:// и https://).
Смежные вопросы