Pergunta sobre php, regex, preg-replace – embrulhe <b> -tag em torno da primeira palavra da string com preg_replace

4

Meu problema é que isso:

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>
preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$&</b>', $string);
amp;</b>', $string);

Não funciona e não sei porque!

Ele produz:<b>$&</b> example se a string foran example. então está errado. Deveria ser:<b>an</b> example

Gerei este código de regex comhttp://gskinner.com/RegExr/ onde funciona.

Eu sei que obviamente o$& não está fazendo a coisa correta. Mas como posso fazer funcionar?

Você pode por favor me dar uma dica?

Sua resposta

3   a resposta
1
$string = 'an example';
echo preg_replace('/^\b(.+?)\b/i', '<b>$1</b>', $string);

// <b>an</b> example
10

Tente com isso

preg_replace('/(?<=\>)\b\w*\b|^\w*\b/', '<b>$0</b>', $string);

$ 0 significa que ele se tornará a primeira coisa combinada em sua regex, $ 1 se tornará o segundo, etc.

Você também pode usar referências para trás; \ 0 obtém a primeira coisa correspondida de onde você está, \ 1 obtém a segunda coisa correspondida etc.Mais informações

Uau. tão fácil. muito útil. obrigado!! John Doe Smith
2

Você precisa colocar um número depois$ para se referir a parte agrupada do regex.Aqui seria primeiro grupo, portanto, 0. Exemplo de trabalho aqui:http://codepad.org/4V7GWdja

<?php

$string = "an example";
$string = preg_replace('/(?<=\>)\b(\w*)\b|^\w*\b/', '<b>$0</b>', $string);
var_dump($string);

?>

Perguntas relacionadas