2014-11-10 3 views
0

У меня есть этот массив строк:Как добавить HTML-код вокруг строки?

array("Foo", "Foo RH 80", "Foo Foo RH 50 Foo", "Foo (RH 80 + 10) foo"); 

Я ищу способ, чтобы добавить тег, как это:

array("Foo", "Foo <b>RH 80</b>", "Foo Foo <b>RH 50</b> Foo", "Foo <b>(RH 80 + 10)</b> foo"); 

Я думаю, что я могу сделать это с некоторыми Regex, но это слишком трудно найти шаблон.

У вас есть идея?

+3

Какой рисунок может быть между '' ? – Justinas

+0

Когда строка содержит «RH XX» (XX - номер) И когда строка содержит «(RH XX + XX)» (В самом деле, когда RH находится между()) – bahamut100

ответ

0

Вы можете использовать регулярное выражение

/RH\s\d{2}|\(RH\s\d{2} \+ \d{2}\)/g 

и заменить <b>$0</b>

DEMO

+0

Хорошо, кажется, все в порядке. Но у меня есть другой случай: «Foo (RH 80 et 20)». Как это сделать с «et»? – bahamut100

+0

Все в порядке: RH \ s \ d {2} | \ (RH \ s \ d {2} \ + \ d {2} \) | \ (RH \ s \ d {2} et \ d {2} \)! Действительно спасибо за помощь! – bahamut100

+0

@ bahamut100 рад помочь :) –

0

Как насчет:

$str = preg_replace('/\(?\bRH \d+(?: \+ \d+)?\)?/', '<b>$0</b>', $str); 
0

Альтернативой с использованием Regex:

Если начало вашей строки всегда то же самое, как в вашем примере вы можете использовать простые строковые функции:

function boldify($pattern, $array){ 
    $new_array = array(); 
    foreach($array as $a) $new_array[] = $pattern."<b>".substr($a,strlen($pattern))."</b>";  
    return $new_array; 
} 

Here's a live example

+0

Хорошо, спасибо за этот трюк! – bahamut100

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