Pytanie w sprawie regex, php, preg-replace – wrap <b> -tag wokół pierwszego słowa ciągu z preg_replace

4

Mój problem polega na tym, że:

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

Nie działa i nie wiem dlaczego!

Wyprowadza:<b>$&</b> example jeśli łańcuch jestan example. więc to źle. Powinno być:<b>an</b> example

Wygenerowałem ten kod regex za pomocąhttp://gskinner.com/RegExr/ gdzie to działa.

Wiem, że oczywiście$& nie robi właściwej rzeczy. Ale jak mogę to zrobić?

Czy możesz mi dać napiwek?

Twoja odpowiedź

3   odpowiedź
2

Musisz umieścić numer po$ aby odwołać się do zgrupowanej części wyrażenia regularnego. Byłaby to pierwsza grupa, stąd 0. Przykład roboczy tutaj:http://codepad.org/4V7GWdja

<?php

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

?>
10

Zamiast tego spróbuj

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

$ 0 oznacza, że ​​stanie się pierwszą rzeczą dopasowaną do twojego wyrażenia regularnego, 1 $ stanie się drugą itd.

Możesz również użyć odnośników; 0 dostaje pierwszą rzecz dopasowaną z powrotem, gdzie jesteś, 1 dostaje drugą rzecz dopasowaną do siebie itd.Więcej informacji

łał. tak proste. bardzo przydatne. Dziękuję Ci!! John Doe Smith
1
$string = 'an example';
echo preg_replace('/^\b(.+?)\b/i', '<b>$1</b>', $string);

// <b>an</b> example

Powiązane pytania