2013-10-01 2 views
1

Я хотел бы заменить URL-адреса на странице с curl в php.preg_replace url для получения id

Адрес:

http://www.externalwebsite.com/title-of-the-page-192345.htm 

Я использую $url = preg_replace('~a href="([a-z,.\-]*)~si', '"', $url);

Это дает мне идентификатор правильно, но если любой другой числовой символ используется в названии

, например;

http://www.externalwebsite.com/title-of-the-3-page-192345.htm 

это дает мне;

3-page-192345 

мощность. Как я могу получить правильный идентификатор страницы в этой ситуации. Спасибо.

UPDATE:

Мне нужно заменить URLs на странице принятого завитка с другого сайта. Урлы похожи на написанные выше.

<?php 

$ch = curl_init ("http://www.externalwebsite.com/index.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec($ch); 
preg_match('#<div class="headline"[^>]*>(.+?)</div>#is', $page, $matches); 
foreach ($matches as &$match) { 
    $match = $match; 
} 
$html=$matches[1]; 
$html = preg_replace('~a href="([a-z,.\-]*)~si', '"', $html); //NEED TO CHANGE THIS           

    echo $html; 

?> 

html-код страницы после скручивания без каких-либо предварительных условий - это что-то в этом роде;

 <div class="swiper-slide red-slide"> 
    <div class="title"><a href="http://www.externalwebsite.com/title-of-the-3-page-192345.htm" class="image"> 
<img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div> 

И этот HTML должно быть что-то вроде, что после команды preg_replace:

<div class="swiper-slide red-slide"> 
     <div class="title"><a href="http://www.mywebsite.com/read_curl_page.php?id=192345" class="image"> 
    <img src="http://www.externalwebsite.com/d/news/94406.jpg"/></a></div></div> 
+0

Вам нужны только последние цифры перед '.htm'? Вам нужно настроить RegExp, я думаю ... неровный шаблон или что-то вроде '. * - ([0-9]) + \. Htm' – CD001

ответ

1

Использование preg_match вместо preg_replace

<?php 

    $matches = array(); 
    $url ='http://www.mywebsite.com/title-of-the-page-192345.htm'; 
    preg_match('#http://(.*?)/(.*?)-([0-9]+).htm#', $url, $matches); 
    print_r($matches); 
    echo $matches[2]; //this will print title of page 
    echo $matches[3]; //this will print id of page 
    echo $matches[1]; //this will domain 
?> 

Он выдает:

Array ([0] => http://www.mywebsite.com/title-of-the-page-192345.htm [1] => www.mywebsite.com [2] => title-of-the-page [3] => 192345) 

preg_replace в качестве своего имя предлагает заменить строку, в которой вы хотите получить некоторую строковую информацию. Подшаблоны могут получить эту информацию в массиве $matches. Подшаблон для номера - ([0-9]+), что означает как минимум 1 номер.

+0

Спасибо, но я должен изменить URL-адреса на страницы своих веб-сайтов, я использую его чтобы получить содержимое страницы других сайтов для чтения на моем сайте. Для этого мне нужно получить spesific id страниц и заменить их на мои URL-адреса. – user2834975

Смежные вопросы