2013-11-24 7 views
0

Я хотел бы найти fileName с расширением в тексте, используя регулярные выражения. У меня есть текст, как это:Имена файлов из двух относительных путей с использованием регулярного выражения

<p>Some text<a href="/relativePath1/file.ext">link</a>.<p>SomeText<img 
src="/relativePath2/file2.ext" style="width: 200.2px; height: 1141px;"></p> 

Я знаю, что две относительные пути, и я хочу, чтобы извлечь имена файлов, которые расположены в этом относительном каталоге пути. Мне не нужны файлы из другого относительного или абсолютного пути. Там может быть больше случаев этих путей. Расширения могут отличаться.

Я пробовал это [\w-]+\.\w+, но он сталкивается со свойством стиля и ширины, и он находит также имена файлов из других относительных путей в тексте. Спасибо за помощь, заранее.

Дополнительные уточнения: Я хочу найти имена файлов, которые находятся в этих двух относительных путях. Я знаю пути, но я не знаю, какие файлы есть. Могут быть множественные вхождения.

+0

ОК , у вас есть несколько относительных путей, и вы просто хотите сопоставить определенные имена файлов с определенных путей, не так ли? Так какие пути вы говорите? – HamZa

ответ

1

Попробуйте:

'/^[a-zA-Z0-9]+\.[a-zA-Z]{3,4}$/'  

Или, возможно, использовать basename()

+0

Ну, это распространенная ошибка, расширения не ограничиваются только символами, и они, конечно, не ограничены 3 или 4 символами. Например, это допустимое имя 'my.tar.gz'. Добавление '^ $' не имеет смысла в этом контексте. – HamZa

0

вход в HTML, так что я хотел бы предложить DOM решение:

$html = <<<EOF 
<p>Some text<a href="/relativePath1/file.ext">link</a>.<p>SomeText<img 
src="/relativePath2/file2.ext" style="width: 200.2px; height: 1141px;"></p> 
EOF; 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$selector = new DOMXPath($doc); 

// select all src and href attributes 
foreach($selector->query('//@href | //@src') as $url) { 
    // extract the filename from path using basename() 
    var_dump(basename($url->nodeValue)); 
} 

Выход:

string(8) "file.ext" 
string(9) "file2.ext" 
Смежные вопросы