2015-08-17 3 views
0

Я использую следующий регулярное выражение, чтобы найти часть URL:preg_match и preg_replace может не совпадать шаблон

$pattern = "(\d+)-.*"; 
//$pattern = "(\d+)-.*[.]htm.*"; 

$replacement = "/going/somewhere?$1"; 
$subject = "http://mudomain.com/59016-string.htm"; 
preg_match($pattern, $subject,$matches); 
$final = preg_replace($pattern, $replacement, $subject); 

echo $final; 
var_dump($matches); 

Узоры должны соответствовать

59016-string.htm

Но все, что я получаю, равно нулю как выход. Что я здесь делаю неправильно?

Отредактировано:после получения решения

Для справки:

http://www.php.net/manual/en/regexp.reference.delimiters.php

http://php.net/manual/en/ref.pcre.php

+4

Используйте разделители регулярных выражений: '$ pattern = '/ (\ d +) -. * /';' –

+0

@stribizhev проклятье .. как я пропустил это. Можете ли вы написать свой комментарий в качестве ответа. Я соглашусь. Спасибо. – Subrata

ответ

3

Вы забыли о регулярных выражений разделителей:

$pattern = '/(\d+)-.*/'; 

В PHP они незаменимы. Кроме того, обратите внимание, что я использую одиночные апострофы: это делается специально, так что нам не нужно удвоить обратную косую черту с помощью \d.

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