正则表达式 - 如何替换字符串,而不会丢失一部分字符串

时间:2013-06-14 08:10:52

标签: php regex preg-replace

我有以下代码。

<a href="/29486389/Author_-_Name_of_Song.mp3/" class="popover-with-html hidden-phone">Andra - Inevitabil va fi bine.mp3</a>

如何使用正则表达式替换此字符串,但不会丢失字符串中的部分。看起来像这样

<a href="melodie/Author_-_Name_of_Song.mp3.html/" class="popover-with-html hidden-phone">Author - Name of Song</a>

我知道我需要使用这样的模式:

$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';

非常感谢。

1 个答案:

答案 0 :(得分:1)

REGEX

<a\s+href\s*=\s*"/\d+/(.+?)_-_(.+?)\.mp3/"\s+class\s*=\s*"popover-with-html hidden-phone">.+?</a>

Regular expression image

Edit


PHP代码

$pattern = '#<a\s+href="/\d+/(.+?)_-_(.+?)\.mp3/"\s+class="popover-with-html hidden-phone">.+?</a>#is';
$replacement = '<a href="melodie/$1_-_$2.mp3.html/" class="popover-with-html hidden-phone">$1 - $2</a>';

$my_clean_html_code = preg_replace($pattern, $replacement, $my_html_code);


SAMPLE OUTPUT

<a href="/29486389/Author_-_Name_of_Song.mp3/" class="popover-with-html hidden-phone">Andra - Inevitabil va fi bine.mp3</a>
<a href="/29486389/Author2_-_sdfsd475.mp3/" class="popover-with-html hidden-phone">
   Andra - Inevitabil va fi bine.mp3
</a>
  • OUT
<a href="melodie/Authodr_-_Name_of_Song.mp3.html/" class="popover-with-html hidden-phone">Author - Name_of_Song</a>
<a href="melodie/Author2_-_sdfsd475.mp3.html/" class="popover-with-html hidden-phone">Author2 - sdfsd475</a>