2010-12-27 2 views
0

Я получил кучу HTML кода, как это:Regex изменить только один экземпляр ofcharacter до того определенной строки

<a href="http://example.com/project-a" title="Project A (test)">Project A (test</span></a> 
<a href="http://example.com/project-b" title="Project B (test)">Project B (test</span></a> 
<a href="http://example.com/project-c" title="Project C (test)">Project C (test</span></a> 
<a href="http://example.com/project-d" title="Project D (test)">Project D (test</span></a> 

Вы можете увидеть в конце каждой строки он получил:

(test</span></a> 

Я хотел бы изменить это открытие-кронштейн к:

<span class="example"> 

Однако, вы можете видеть, что есть другие Вскрытие скобки на каждой строке, так что я думаю, т он является первой открытой скобкой, прежде чем тег закрывающего диапазона должен быть изменен.

Есть ли способ сделать это с помощью регулярных выражений и php?

ответ

1

Ну, если она всегда выглядит так, вы можете просто использовать:

str_replace(' (test</span>', ' <span class="example">test</span>', $string) 

Или, если это не всегда "тест" :)

preg_replace('/ \((.*?)<\/span>/', ' <span class="example">$1</span>', $string) 
1

Использование preg_replace() функции:

$pattern = '(\*test</span></a>)'; 
$replaceWith = '<span class="example">'; 

$str = '<a href="http://example.com/project-a" title="Project A *test*">Project A *test</span></a> 
<a href="http://example.com/project-b" title="Project B *test*">Project B *test</span></a> 
<a href="http://example.com/project-c" title="Project C *test*">Project C *test</span></a> 
<a href="http://example.com/project-d" title="Project D *test*">Project D *test</span></a>'; 

$newStr = preg_replace($pattern, $replaceWith, $str); 
Смежные вопросы